Thực tập sinh Google giải thích lí do giao diện Android kém mượt

Duy Luân
7/12/2011 6:56Phản hồi: 902
Thực tập sinh Google giải thích lí do giao diện Android kém mượt

Giao diện Acer Ring trên máy tính bảng ICONIA TAB A200

Mới đây, kĩ sư tập sự Andrew Munn tại [TAG]Google[/TAG] đã cho biết thông tin vì sao hầu hết các thiết bị chạy [TAG]Android[/TAG] thường phản hồi chậm hơn và hoạt động của giao diện không mượt mà bằng [TAG]iOS[/TAG] hay [TAG]Windows Phone 7[/TAG]. Trên trang Google+ của mình, Andrew Munn nói rằng việc chậm như vậy không phải do Android chạy bytecode (mã chương trình sẽ được dịch thẳng sang mã máy) hay do iOS sử dụng native code (tạm dịch: mã gốc, mã được viết cho một vi xử lí xác định). Cốt lõi của vấn đề nằm ở thứ tự ưu tiên cho việc dựng đồ họa trên các hệ điều hành này khác nhau. Android dựng hình liên tục, và tất cả thao tác đều có mức độ ưu tiên như nhau, theo đúng mô hình của máy tính truyền thống. Trong khi đó, thao tác dựng hình của iOS và Windows Phone 7 được "xếp hàng" và đợi đến khi cần thì chúng sẽ được bộ xử lí đồ họa tải lên (mức độ ưu tiên theo thời gian thực).


Cập nhật: một số điểm trong bài viết của thực tập sinh Andrew Munn được chứng minh là sai, và giao diện Android vẫn có thể được trở nên mượt mà hơn bằng cách sử dụng phần cứng mạnh. Dianne Hackborn, kĩ sư nền tảng của Google Android, cho biết lí do khiến máy chậm là tính bảo mật và độ linh hoạt của hệ điều hành này.


Lược dịch bài viết của Andrew Munn:


Đây chính là lí do khi chúng ta khởi động nhiều ứng dụng trên Android thì máy bắt đầu chậm lại. Trong iOS, nếu một ứng dụng chưa hoàn tất việc tải nhưng bạn vẫn chạm vào màn hình thì nó sẽ tạm dừng. Đến khi nào bạn bỏ ngón tay khỏi màn hình thì nó mới tiếp tục công việc. Ví dụ rõ nhất mà bạn có thể thử đó là khi Safari đang tải trang web, nếu chạm tay vào màn hình thì nó sẽ dừng mãi, bỏ tay ra thì tiếp tục tải về. Tương tự, khi iOS đang tải ứng dụng từ App Store, chạm tay lên màn hình sẽ khiến máy dừng lại. Việc này giúp cho thiết bị iOS hay Windows Phone 7 không phải hoạt động vất vả trong thực thi đa tác vụ, giúp tiết kiệm pin hơn. Android cố gắng làm tất cả mọi việc cùng một lúc nên kết quả là giao diện không còn mượt, máy chậm đi thấy rõ.


Bên cạnh nguyên nhân về khả năng render (các thao tác dựng hình nói chung, cần thiết để hiển thị đối tượng lên màn hình) giao diện theo luồng và tính ưu tiên khi xử lý thì việc Android giật hơn WP7 hay iOS còn phụ thuộc vào nhiều nguyên nhân khác.

Trước tiên là khả năng hỗ trợ của phần cứng. Sự tăng tốc về phần cứng tạo nên sự khác biệt lớn đối với những ứng dụng như Home Screen và Android Market. Việc giảm tải render đối với GPU sẽ giúp tăng thời lượng pin bởi GPU là phần cứng có chức năng không đổi (fix-function) và vì vậy, chúng hoạt động ở mức điện năng thấp hơn.

Vấn đề thứ 2 liên quan đến hệ thống tối ưu bộ nhớ (Garbage Collection - GC). GC có nhiệm vụ thu hồi các tập tin rác hay bộ nhớ do ứng dụng chiếm đóng trong quá trình khởi chạy và không còn được sử dụng. Ví dụ, nếu bạn sử dụng ứng dụng Photo Gallery trên phiên bản Android Honeycomb hay Ice Cream Sandwich, bạn sẽ ngạc nhiên khi tỉ lệ khung hình trong một giây (fps) khá thấp. Hình ảnh sẽ tự động được đưa về 30 fps bởi nếu không cắt bớt, việc vuốt qua lại giữa các bức ảnh sẽ được xử lý ở 60 fps. Ở 60 fps, GC đôi khi sẽ tạm ngưng gây nên tình trạng "vấp" trong khi vuốt. Vì vậy, bằng việc giảm tỉ lệ khung hình xuống 30 fps, hiện tượng "vấp" đã được giải quyết.

Thứ 3 tiếp tục là một vấn đề liên quan đến phần cứng. Chip [TAG]NVIDIA[/TAG] [TAG]Tegra 2[/TAG] là chip lõi kép nhưng nó vẫn gặp phải tình trạng thiếu băng thông bộ nhớ và không hỗ trợ công nghệ NEON. (NEON là một công nghệ do ARM phát triển giúp tăng tốc khả năng xử lý thuật toán cho nội dung đa phương tiện và tín hiệu như giải mã/ghi mã video, đồ họa 2D/3D, game, âm thanh, xử lý giọng nói, hình ảnh, hội thoại và âm thanh tổng hợp). Máy tính bảng Honeycomb có thể sẽ tốt hơn nếu sử dụng một GPU khác.

Thứ 4, Android cần phải có một hệ thống giao diện phối hợp hiệu quả hơn. Trên iOS, mỗi thành phần của giao diện (UI) được render độc lập và được lưu trữ trong bộ nhớ, vì vậy rất nhiều hiệu ứng chuyển động chỉ yêu cầu GPU tái tổ chức UI. Nhưng thật không may, trên Android, hệ thống phân cấp của UI lại bị chắp vá trước khi render. Do đó, các hiệu ứng chuyển động yêu cầu mọi thành phần hoạt hóa của màn hình phải được vẽ lại (redrawn).

Thứ 5, bộ máy ảo Dalvik VM không đủ mạnh như máy ảo Java (Java Virtual Machine). Java nổi tiếng về khả năng xử lý các giao diện nặng trên máy tính bàn. Dalvik lại không thể thực hiện một điều tương tự. Hiện tượng lag cũng một phần do Dalvik là một nền tảng chéo chạy trên các API máy (native API) và làm nhiệm vụ phiên dịch các tập tin *.dex (Dalvik Excutable) để ứng dụng có thể chạy được trên Android. Trong khi đó, lõi UI của WP7 được xây dựng trên mã máy mặc dù theo kế hoạch ban đầu thì giao diện WP7 sẽ dựa trên Silverlight.

Tóm lại, giao diện của Android sẽ không thể hoàn toàn mượt mà bởi những ràng buộc sau:
-Việc render giao diện xảy ra trên luồng (thread) chính của ứng dụng;
-Việc render giao diện chỉ có phân cấp bình thường thay vì ưu tiên.

Quảng cáo



Ngay cả với chiếc [TAG]Galaxy Nexus[/TAG] hay chiếc máy tính bảng bốn nhân [TAG]EeePad Transformer Prime[/TAG] thì vẫn không thể đảm bảo độ mượt khi vận hành nếu 2 ràng buộc trên còn tồn tại. Vậy tại sao nhóm phát triển Android lại thiết kế bộ khung render như vậy?

Dự án Android được khởi động từ trước khi iPhone ra đời và vào thời điểm này, Android được thiết kế để cạnh tranh với [TAG]Blackberry[/TAG]. Nguyên mẫu đầu tiên của Android không phải là một thiết bị có màn hình cảm ứng và bộ khung render của Android thực sự hữu ích với bàn phím QWERTY và trackball. Khi iPhone ra mắt, nhóm phát triển Android bị thúc giục phải phát hành một sản phẩm cạnh tranh trực tiếp với iPhone nhưng đã quá muộn để viết lại bộ khung giao diện.

Đây cũng chính là lý do tại sao Windows Mobile 6.5, Blackberry OS và Symbian hỗ trợ màn hình cảm ứng rất kém. Giống Android, cả 3 đều không được thiết kế để tối ưu hệ thống render giao diện. Để cạnh tranh với iPhone, cả RIM, Microsoft và Nokia đã từ bỏ nền tảng cũ của họ và phát triển nền tảng mới phù hợp hơn. Vì vậy, Android có thể nói là nền tảng di động duy nhất còn "vướn" lại ở thời đại "tiền iPhone".

Tại sao nhóm phát triển Android không viết lại bộ khung render? Lập trình viên Romain Guy cho biết:

Romain không nói khó ở điểm nào nhưng có thể suy đoán:

-Tất cả ứng dụng Android phải được viết lại để hỗ trợ bộ khung render mới;

Quảng cáo


-Android cần được trang bị chế độ hỗ trợ cho các phần mềm cũ;
-Việc phát triển các tính năng mới cho Android sẽ phá sản nếu đưa ra bô khung mới.

Thiết nghĩ việc thay đổi bộ khung phát triển của Android là điều cần xảy ra mặc cho những khó khăn và hệ lụy. Vấn đề lag của Android phải được đặt lên hàng đầu bởi nội dung phàn nàn nhiều nhất về Android vẫn là "chậm" và "giật". Bên cạnh đó, giao diện hay lag sẽ phá vỡ cốt lõi ngôn ngữ của màn hình cảm ứng. Thiết bị với màn hình cảm ứng sẽ không còn "tự nhiên" nữa và màn hình cảm ứng cũng mất đi tính chất "ma thuật" của nó. Android cần phải khắc phục nhược điểm kể trên nếu không muốn mất đi hình tượng của mình trong lòng người dùng.

902 bình luận
Chia sẻ

Xu hướng

truong0123
ĐẠI BÀNG
12 năm
giờ mới biết tại sao android giật
Crazywolf
ĐẠI BÀNG
12 năm
em ngu học nên ko biết.nhưng nếu đã biết đc cốt lõi vấn đề thì tại sao ko khắc phục ngay đi.....
Chém gió thì dễ nhưng sửa được là cả vấn đề... trước mình cũng có học về lập trình nên có thể hiểu thế này... gu gờ đi hơi sai hướng xử lý cái đấy bây giờ muốn viết lại thì có thể phải thay đổi toàn bộ android.. mà nếu làm như thế có thể chậm chân hơn các thằng khác nên hướng xử lý là sửa dần cái cũ và phát triển 1 cái mới tinh sau đó mới tung ra... Nhìn chung thì nói và nhìn ra vấn đề rồi nhưng khắc phục chắc không đơn giản tý nào nên mãi không cải tiến được việc lag và giật
kurt80
TÍCH CỰC
7 năm
@Crazywolf Rất tiếc nhà đã xây đến tầng bảy, đập cái móng đi mà xây lại thì tất cả các viên gạch (các phần mềm ứng dụng) phải được sản xuất lại từ đầu. Google chưa sẵn sàng để làm việc này
phomuabay
TÍCH CỰC
7 năm
@kurt80 Giờ cấu hình cao rồi, mượt mà xêm xêm, lại ăn đứt khoản đa nhiệm. Đập xây lại làm gì ?
kurt80
TÍCH CỰC
7 năm
@phomuabay Đúng là xây lại thì rất phí nhưng tất cả những ai ngồi trong ngôi nhà đó đều công nhận là móng yếu, rất rung lắc. Chả như nhà bên kia, vững chắc mà tốn ít vật liệu.
biết là không mượt thì tìm cách tháo gỡ cho mượt chứ nói như thế có ích gì nhỉ, chúc Android phát triển
nếu viết lại bộ khung sẽ phải viết lại toàn bộ ứng dụng... nan giải đây!
Bộ Khung đc xem như: Kệ chén đĩa, ứng dụng là chén, bát dĩa trên đó....mang chén, bát, dĩa đưa qua cái kệ khác có sao đâu...hi hi
EM nghĩ bậy bạ, vui nhé!
hieubf
TÍCH CỰC
12 năm
bạn hiểu sai oy, Khung là dịch nôm na ra tiếng việt vậy thôi chứ nó là Nền tảng mới đúng. Viết lại thì nó không phải ăn roi nữa mà có khi gọi là ăn táo cũng nên 😆, đổi tên như WM đổi sang WP đấy
Đây là ý kiến của 1 tập sự của Google thôi chứ đâu phải là Google chính thức thông báo như vậy đâu. Viết tiêu đề như thế dễ gây sự hiểu lầm.
ndacthien
TÍCH CỰC
12 năm
Biết đâu tập sự đó thực sự là nhân tài sao bạn? Để xem các bác nhà GG trả lời thế nào đây. Hy vọng đây đúng là nguyên nhân và đã biết nguyên thì phải thẳng tháng khắc phục. Đang xài Android, ủng hộ Android.
huongdotien
ĐẠI BÀNG
12 năm
Nhất trí với ý kiến này, nên đổi lại tiêu đề tránh "dìm" hàng Android
Nếu nó là sự thực thì Google đâu dễ dàng thừa nhận đc. Khác j tự dựng nhận là mình là thằng theo lạc hậu, chay theo đuôi apple
kumeo29
ĐẠI BÀNG
12 năm
..............
Mình thấy độ nhạy cảm ứng trên S2 tốt lắm mà

Mình đôi khi cũng thế 😆
Với cấu hình khủng thì nói làm zì.

Thực tế là ios nó rất mượt khi so máy andr cùng cấu hình. Con 3gs mượt hơn hẳn con galaxxy ace.

Cả thằng bada sinh sau phải biết lý do lag của andr mà sao nó ko ăn thua nhỉ?
Wave 1 vẫn kém mượt so với ip4 là thằng cấu hình hơn hẳn ip4
bạn thử mở nhiều ứng dụng cùng 1 lúc xem, máy sẽ chậm ra thấy rõ
iPhone 4S và Windows Phone có thể mở 1 lúc 20 mấy ứng dụng mà ko ảnh hưởng gì cả
ok dùng s2 cảm ứng mượt mà .đâu có thua kém gì IP ,với lại bây giờ rom cook có thêm hiệu ứng bravia của sony,màn hình rất ngon
buihungkb
TÍCH CỰC
12 năm
Đúng là Android dù có mạnh đến mấy cũng ko thể mượt đc hoàn toàn, cảm giác vẫn có 1 độ trễ nào đó, mà đôi khi khiến người ta lầm tưởng rằng đó là do cảm ứng kém nhạy. Mình đang mong chờ sự khác biệt từ N9 😁
bạn mong N9 là đang mong sự khác biệt của Mee go so với android à =='
mình cũng như bạn, sử dụng cả WP7,IOS và Android tuy nhiên vẫn cảm thấy Android có 1 độ trễ nhất định dù rất rất là ít ( tuy nhiên nó lại có những cái hay mà HĐH khác không có, lên thôi cứ vọc thôi ... )
buihungkb
TÍCH CỰC
12 năm
Đúng vậy ^^ mình rất tin tưởng vào meego
bạn dùng thử N9 rồi thì biết........! khó dùng lắm
Theo nội dung này thì Android thật cũ kĩ và cùi nhất.
mình nghĩ nếu lên iphone 4 mà hỗ trợ flash từ apple thì cũng ko có giựt đâu mà chỉ tốn pin thôi 😆,đơn giản như game mình thấy nhiều con mạnh hơn ip4 chút chư DHD chạy ảo tung chảo =))
game nó đi theo phần cứng rồi mà bác, chấp sao được :|
nghĩ vẩn vơ thôi chứ có phải lập trình viên đâu 😆
Dạ a nói đúng e rất là ganh tị. E chưa dc xài android. Hiện tại e chỉ đang xài có N8, HD7 và Ipad2 thôi nên e rất là muốn có 1 con android. Và bác nên đọc kĩ dùm e cái, e ghi là theo nội dung bài viết thì e hiểu như vậy chứ e có phán như vậy đâu.
hungle411
TÍCH CỰC
12 năm
đó. sự thành công của Androi đâu phải do nó là HĐH tốt nhất đâu? Nó thành công là do hiệu ứng đám đông 😁
ủa chứ iPhone ko phải thành công do hiệu ứng đám đông sao....
hungle411
TÍCH CỰC
12 năm
mình đang nói đến sự đông nhất mà? iphone có đông hơn Androi ko vậy bạn? Thân !
Cài lên máy ảo thì đừng hỏi ==> dev android ai mà ko có device thì đúng là hơn cả cực hình, mà có device ko ngon cũng cực hình chẳng kém.... Các bác fixxxxxx điiiiii
beautiful
ĐẠI BÀNG
12 năm
Chuẩn, ngồi debug trên giả lập android có ngày đi viện vì bệnh tim mất, chờ dài cả cổ mà vẫn hay lỗi. Chứ giả lập của WP7 cũng chạy nhanh gần bằng debug trên device android.
Chính vì android lag mà mình chuyển sang dùng wp. Sau khi dùng WP thì mình không muốn dùng 1 cái android nào nữa. Mình đã thử dùng mấy cái android mới ra mà thấy vẫn "giựt giựt" rất khó chịu nên vẫn dùng nguyên con wp cũ.
Chuẩn k cần chỉnh. Em cũng giống bác. 😆
@dinhtuan117 bác dùng con android nào vây?
leonheart
TÍCH CỰC
12 năm
hy vọng sẽ sớm được nhìn thấy android mượt như iOS
nếu vậy thì android là HDH tuyệt đỉnh à . Cái gì cũng có khuyết điểm chứ .
leonheart
TÍCH CỰC
12 năm
vấn đề mượt của 1 hdh là vấn đề khá quan trọng đó bạn... giả sư như đến lúc nào đó winphone, iOS, android đều trở nên quá nhàm chán thì chắc mọi người sẽ chọn cho mình cái nào nhanh nhất mà xài thôi
viết lại đi android, cập nhật cho anh em bản mới, cực mượt mà hơn ios đi. mình dùng sense htc thấy cũng mượt, nhưng vẫn thua ios tí, thôi biết sai vậy khắc phục nữa là làm trùm smartphone rồi đó
KySiRong
TÍCH CỰC
12 năm
Căng nhỉ, ko lẽ Android chịu vậy suốt đời @_@, Hy vọng là đang có 1 dự án ngầm nào đó viết lại toàn bộ bộ khung render và phát hành ra bản 5 chẳng hạn. Thà chịu đau 1 lần thay hết thiết bị và phần mềm còn hơn là bị bệnh dài dài.
thế thì phải xài ai-fone ah ?
KySiRong
TÍCH CỰC
12 năm

Windows Phone 7, BlackBerry 10, chưa kể cái đám lau nhau Bada, WebOS ...
m4jy3uj3x
ĐẠI BÀNG
12 năm
giờ thì mới rõ tại sao androi ko mượt bằng ios webos hay winphone7 nếu cùng cấu hình hoặc nhỉnh hơn chút xíu.
@m4jy3uj3x thế mà có mấy bác lấy cấu hình android đem so với BB hay WP
thực tế thì chỉ có android là cần nhiều tài nghuyên chỉ để chạy mượt:p
qtrọng nữa là android đa cấu hình giíp đưa mọi người đều có thể sử dụng smartphone nên muốn thiết kế lại sẽ rất khó khăn cho các lập trình viên, đành chờ đợi tương lai tương sáng thôi 😆 mình vẫn thích Android nhất 😁
tại sao google không lên tiếng chính thức mà phải mượn tay kỹ sư tập sự 😁
oldlight
TÍCH CỰC
12 năm
Vì GG lên tiếng chính thức, giải thích về hiệu năng của GPU trên Android "ko đúng", nên ông em tập sự mới quăng gạch, và đó là lý do có bài viết này!

^^
Có thể là chiêu chưng cầu dân ý của GG, mượn tay tập sự để làm cho đỡ ê mặt thôi, có ai lại đi vạch áo cho người xem lưng đâu 😃
nttkts
TÍCH CỰC
12 năm
Ngu gì mà nó nêu cái chưa tốt của nó ra, ai lại vạch áo cho ng xem lưng. Mấy thằng tập sự ko có gì để mất mới có gan thôi, có khi còn dc nổi tiếng.
oldlight
TÍCH CỰC
12 năm
Bạn nói cũng có lý đúng... ^^
đọc xong đã hiểu đc khá nhiều về Android. Chỉ cần xác định phương hướng phát triển sai lệch lúc đầu, nó sẽ dẫn tới cả một mối rắc rối sau này 😁. Dù sao mình vẫn thích Android 4.0, cố lên các lập trình viên ^^

---------- Post added at 09:44 AM ---------- Previous post was at 09:43 AM ----------

Đâu có dễ đâu bạn, viết lại bộ khung mới thì phải viết lại tất cả các phần mềm android phù hợp với bộ khung mới ( bài viết có nói mà), nói chung là đâm lao theo lao, phải tìm cách khắc phục dần thôi ^^

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019