down

4.06.2012

Nguyên nhân bạn không nên dùng task killer trên Android

Cập nhật:
Google, LifeHacker, Cyanogen và các developer của task killer, họ nói gì?
Cách tìm ra những app chiếm nhiều tài nguyên hệ thống và khắc phục mà không cần đến task killer:
http://www.tinhte.vn/phan-mem-andro...en-noi-gi-ve-task-killer-tren-android-768353/



Task Killer (trình quản lý ứng dụng) là một trong những chủ đề dễ bị hiểu lầm cũng như gây tranh cãi nhiều nhất trong cộng đồng Android. Qua bài viết này của thành viên le3ky thuộc diễn dàn xda-developers, mình xin giải thích với các bạn tại sao chúng ta đừng nên sử dụng Task Killer trên nền tảng Android.

[IMG]

Nguyên văn bài viết của tác giả Rachid (admin của site www.droid-den.com):

Tạm dịch:
“Tôi liên tục đi từ ngạc nhiên này đến ngạc nhiên khác khi nói chuyện với những người mới sử dụng Android đến hỏi tôi về những vấn đề mà họ gặp phải về chiếc điện thoại “đầy lỗi”, “hao pin” mà nguyên nhân chính là do ứng đầu tiên họ cài khi mua máy là 1 task killer. Khi tôi tìm hiểu kỹ hơn và hỏi họ nguyên nhân vì sao họ lại cài task killer, câu trả lời hàng đầu là “bởi vì những người bạn “rành công nghệ” của họ bảo rằng đó là một ứng dụng bắt buộc phải có”. Đầu tiên, tôi xin đính chính rằng, nếu đó là một ứng dụng không thể thiếu cho Android, Google đã tích hợp vào Android ngay từ đầu. Tiện thể, nếu người bạn “rành công nghệ” của bạn khuyên bạn tải 1 task killer, từ nay về sau bạn nên phớt lờ những lời khuyên “bổ ích” của họ, bạn sẽ không hối hận sau này.
[IMG]


Để bắt đầu, tôi sẽ giải thích cho bạn tại sao 1 task killer không những không cần thiết mà còn có HẠI cho điện thoại của bạn. Tôi cũng sẽ nói thêm về một số ít trường hợp mà bạn cần Task Killer và giải pháp tốt nhất cho những trường hợp này.

I. HIỂU THEO CÁCH CỦA ANDROID (ANDROID không phải là Windows PC)
Để hiểu tại sao Task Killer là không cần thiết đối với Android, bạn phải hiểu được cách mà HĐH Android làm việc, quản lý tác vụ (task) và thế nào là task.
Android là một HĐH đa nhiệm, được xây dựng với đặc tính là không cần phải tự mình đóng ứng dụng mà việc đó sẽ do HĐH đảm nhiệm. Các lập trình viên đã cố ý không tích hợp task killer cũng như cách để tắt nhanh ứng dụng. Thử nghĩ mà xem. Ứng dụng Gmail là một ứng dụng được phát triển bởi Google, và bạn hoàn toàn không thấy bất kí nút Close nào đúng không? Trong thực tế, tôi dám cá rằng rất nhiều người còn không biết rằng nó có thực sự chạy hay không nữa. (Tôi sẽ định nghĩa chạy - running sau). Google không muốn người dùng phải gánh vác việc đóng ứng dụng sau khi dùng xong. Họ quyết định việc đóng ứng dụng dựa trên cơ sở tần suất sử dụng của người dùng với những ứng dụng khác nhau trong ngày.
[IMG]


Vậy bây giờ bạn đã hiểu tại sao Google quyết định không tích hợp một nút Close hay một task killer. Nhưng dĩ nhiên cần nhiều hơn thế để bạn thực sự bị thuyết phục rằng task killer là vô nghĩa. Tiếp theo, hãy thảo luận về việc gì thực sự diễn ra sau khi bạn rời ứng dụng (nhấn phím Back/Home). Có 2 điều cơ bản tạo thành 1 ứng dụng mà bạn cần phải hiểu: ứng dụng (application) và tiến trình (process). Đây là chìa khóa để bạn hiểu vì sao chúng ta không cần task killer.

Thế nào là tiến trình (process)?
Process là một hoạt động có thể được thực thi bởi một hoặc nhiều application. Khi ứng dụng làm một hoạt động , ví dụ chơi nhạc, gửi update lên facebook, đồng bộ RSS,... thì những hoạt động này là process. Mặc dù vậy, tôi phải nói rằng, chỉ vì có 1 process tồn tại trong bộ nhớ không có nghĩa là process đó đang thực sự làm việc. Cho dễ hiểu, process đó có thể đang trong trạng thái hoạt động (active) hoặc nghỉ (idle).
[IMG]


Thế nào là ứng dụng (application)?
Application là chương trình sử dụng nhiều process khác nhau để cung cấp những thông tin và hoạt động mà bạn cần. Một application được xem là đang hoạt động khi nó sử dụng các process hoạt động. Một application được xem là không hoạt động khi các process mà nó sử dụng đều ở trạng thái nghỉ.

[IMG]



Quay lại với câu hỏi “việc gì thực sự diễn ra sau khi bạn rời ứng dụng”. Lúc này, application được cho phép giữ các process của nó chạy ngầm để có thể hoàn tất công việc của nó. Khi hoàn thành, process hoạt động sẽ trở thành process nghỉ, không làm gì cả, nhưng vẫn được giữ trong bộ nhớ để bạn có thể sử dụng lại ngay khi cần.
VD: Ứng dụng Browser sử dụng các process chạy ngầm để tải nốt trang web trong khi bạn làm việc khác. Sau khi tải trang hoàn tất, các process này trở thành process nghỉ. Các process vẫn được giữ trên RAM để bạn có thể nhanh chóng load 1 trang web khác.
Nhiều người nghĩ rằng việc giữ nhiều application và process trong bộ nhớ như vậy sẽ gây tốn pin. Không điều gì có thể xa sự thật hơn thế. Việc giữ các application nghỉ và process nghỉ này trên bộ nhớ sử dụng pin chính xác bằng lượng pin nó sẽ sử dụng nếu section đó của bộ nhớ trống.

Dần dần sẽ không còn bộ nhớ trống. Đến lúc dùng task killer? Không! Android đủ thông minh để nhận ra khi nào thiếu bộ nhớ, từ đó nó tự đóng các application/process mà nó cho rằng có ưu tiên thấp, còn được hiểu như là những application mà bạn ít sử dụng đến nhất và không phải là ứng dụng hệ thống. Khi những application này bị đóng bởi chính Android (chứ không phải bởi task killer), thì lần tiếp theo được mở lại, nó sẽ xuất hiện lại y hệt như lúc nó bị đóng cứ như chưa từng bị đóng vậy.

Tóm lại ý chính của toàn bộ phần trên: task killer hoàn toàn không cần thiết đối với Android, và còn ảnh hưởng đến sự ổn định của hệ điều hành.

II. NHỮNG QUAN NIỆM SAI LẦM VỀ ANDROID VÀ TASK KILLER
Vậy bạn đã hiểu cách mà Android quản lý bộ nhớ và tại sao task killer là thừa thãi. Để tiếp tục, tôi sẽ đề cập đến những quan niệm sai lầm thường gặp về Android và chức năng của task killer.

1. “Task Killer kéo dài thời gian sử dụng pin” - SAI
Task killer làm điều ngược lại: thời gian sử dụng sẽ bị giảm đáng kể. Hãy xem chính xác là bạn đã làm gì khi kill ứng dụng bằng task killer: bạn loại bỏ nó hoàn toàn khỏi bộ nhớ. Bạn nghĩ rằng làm vậy sẽ tiết kiệm pin? Không hề! Như đã nói ở trên, cho dù ứng dụng đó có trên RAM hay không, lượng pin sử dụng cho phần RAM đó là như nhau. Ram trống không hề tiêu thụ ít pin hơn RAM hoạt động. Hãy nhớ, đây là Android, không phải Windows. Lần sau bạn mở ứng dụng đó lên lại, việc đưa ứng dụng đó lên RAM lại sẽ tốn rất nhiều pin so với việc mở lại từ RAM.

2. “Task killer làm điện thoại chạy nhanh hơn” - SAI
Task killer làm điện thoại trở nên bất ổn định. Kill 1 process sẽ ảnh hưởng đến nhiều application đang sử dụng process đó. Bên cạnh đó, bạn gây ra sự gián đoạn bên trong HĐH, làm các application này phải mở lại để khởi tạo lại các process.
Bạn có bao giờ để ý rằng sau mỗi lần kill ứng dụng, browser tải trang chậm hơn hẳn cho lần tải đầu tiên, hay là danh sách ứng dụng trong Drawer bị reload mặc dù browser và launcher nằm trong ignore list? Đó là ví dụ điển hình cho việc các process mà những ứng dụng này đang sử dụng bị kill đột ngột.

3. “Vì không có nút thoát nên tôi dùng task killer”
Không có nút thoát trên Android bởi vì Android được thiết kế để người dùng không cần phải đóng ứng dụng thủ công như Symbian hay Windows Mobile. Nếu có ứng dụng cần được đóng thì Android sẽ tự làm việc đó.

III. KHI NÀO THÌ TÔI CẦN TASK KILLER?
Như đã nói ở đầu bài viết, sẽ có những lúc mà bạn phải cần 1 task killer: Ứng dụng bị đứng, bị lỗi, chiếm quá nhiều tài nguyên hệ thống, khiến HĐH trở nên bất ổn định. Trong những trường hợp này, bạn nên ngưng sử dụng, hoặc thậm chí là gỡ bỏ hẳn ứng dụng đó ra khỏi máy, sau đó email nhà phát triển về vấn đề mà bạn gặp phải và có thể họ sẽ cải thiện nó. Nếu họ không sửa chúng, hãy đảm bảo rằng bạn không sử dụng bất kì ứng dụng nào nữa từ họ bởi vì rõ ràng là họ chẳng biết quái gì về lập trình cả. Chẳng việc gì phải tiếc nuối khi mà có vô vàn ứng dụng khác có thể đáp ứng tốt nhu cầu của bạn, đươc phát triển bởi những người thật sự hiểu về nền tảng mà họ lập trình.
[IMG]


IV. KẾT LUẬN:
Vậy bạn đã hiểu tại sao task killer không tốt cho điện thoại của bạn và tại sao không nên sử dụng chúng. Nhiều người tỏ ra thông minh và cho rằng họ hiểu Android mà thực ra là họ chẳng biết gì cả. Đừng nghe những người này mà thay vào đó, hãy gửi họ đến đây!
Chúc may mắn. Hãy tận hưởng việc trải nghiệm HĐH Android và hãy để Android làm phần việc còn lại.”


NHẬN XÉT CỦA BẢN THÂN:
Trước hết, để tránh việc hiểu lầm, mình xin nói rõ: Không sử dụng task killer có nghĩa là không dùng các task killer để kill all, auto kill sau những khoảng thời gian nhất đinh hoặc sau khi tắt màn hình. Các task killer chỉ nên dùng để kill những app bị lỗi, treo,... mà thôi.
Khi tắt tính năng auto kill mỗi 60 phút của ATK đi, máy chạy tuy chậm hơn chút đỉnh khi mở ứng dụng, tuy nhiên thời gian sử dụng pin dược cải thiện đáng kể.
Về lý thuyết, việc này đúng với mọi phiên bản của Android. Tuy nhiên, trên các máy Android 1.6, độ trễ khi mở ứng dụng là khá cao so với các máy có phiên bản cao hơn. Việc này là do việc giải phóng bộ nhớ của Donut vẫn chưa được Google tối ưu hóa tốt bằng Eclair 2.1 trở về sau, gây ra độ trễ khi mở ứng dụng.

Điều tương tự cũng xảy ra đối với các máy có RAM thấp (<256MB) do minfree khá thấp. Cho 2 trường hợp trên các bạn có thể dùng AutoKiller Memory Optimizer để tăng minfree nhằm giúp điện thoại chạy nhanh hơn.

AutoKiller Memory Optimizer:

Mức RAM tối thiểu mà từ đó Android sẽ tự giải phóng RAM là khác nhau đối với những thiết bị khác nhau. Tốc độ giải phóng RAM trên những phiên bản HĐH cũ là khá chậm nên nhiều người phải tìm đến task killer. Tuy nhiên, có một cách khắc phục tốt hơn là bạn có thể dùng AKMO để tăng mức RAM free tối thiểu lên để thiết bị chạy nhanh hơn.
[IMG]

Hướng dẫn sơ lược cách SD:
- Yêu cầu: máy dã được root.
- khi mở chương trình:
Hidden apps: Khi xuống dưới mức RAM ở trong ô này, HĐH sẽ tự kill các ứng dụng ẩn
Content providers:
Khi xuống dưới mức RAM ở trong ô này, HĐH sẽ tự kill các content providers
Empty app: Khi xuống dưới mức RAM ở trong ô này, HĐH sẽ tự kill các ứng dụng không còn hoạt động.

Các thông số có sẵn trong lần đầu mở ứng dụng là các thiết lập có sẵn của nhà sx. Nếu đã lỡ tay xóa, bạn có thể mở lại bằng cách mở Option - Preset - System Default.
Từ đây, nếu bạn muốn máy chạy nhanh hơn, bạn có thể chọn 1 preset cao hơn default. Các số bên cạnh các preset lần lượt là số RAM trống tối thiểu mà từ đó Android sẽ bắt đầu kill Hidden app/Content Provider/Empty App. Bạn cũng có thể tự thiết lập các thông số nếu muốn.
Bấm Appply.

Lưu ý:
- những thay đổi trên sẽ bi mất sau khi reboot máy. Nếu bạn muốn thiết lập được giữ nguyên, vào Setting - Apply Settings on Boot.
- Tác dụng phụ của việc giữ nhiều RAM trống là máy bạn sẽ hao pin hơn nếu bạn sử dụng nhiều ứng dụng (do các ứng dụng này có thể bị kill/load liên tục). Để khắc phục, bạn nên chỉnh xuống 1 preset thấp hơn và (nên) reboot máy. Vấn đề pin sẽ được khắc phục.

Thông tin chi tiết hơn về cách sử dụng, các bạn có thể search trong forum hoặc từ trang hỗ trợ của nhà phát triển tại đây:
http://andrs.w3pla.net/autokiller/faq
Download:
[IMG]Nếu bạn đang xem bằng điện thoại: market://search?q=pname:com.rs.autokiller
Nếu bạn đang xem bằng máy tính:
[IMG]

0 comments

Post a Comment