Hình 1 - Nhiều Zombie đã bị giết trong quá trình nghiên cứu Câu trả lời này
Không nên giết ứng dụng Android Quy trình Java VM ở cấp hệ điều hành. Thật không may, đây chính xác là những gì cửa sổ thiết bị nhật thực "dừng" làm, cũng như System.exit () và lệnh "giết" trình bao.
Điều này sẽ thay đổi các phương thức vòng đời ứng dụng thông thường như onStop (), onDestroy () và finalize ().
Nhiều ứng dụng yêu cầu các phương pháp này để thoát một cách dễ dàng (ví dụ: nếu chúng sử dụng các đối tượng hệ thống như Cảm biến, MediaPlayer, Bộ chỉnh âm, Trình hiển thị, v.v.).
Các đối tượng hệ thống này bám quanh cái chết của thây ma trên tài nguyên hệ thống nếu release () không được gọi rõ ràng trong các phương thức vòng đời này. Xem hình. 1 ở trên. Điều này có thể ngăn ứng dụng khởi động lại và thậm chí yêu cầu khởi động lại. Đó là khía cạnh vô phúc.
Giải pháp duy nhất là đảm bảo rằng bạn luôn thoát khỏi ứng dụng của mình một cách sạch sẽ bằng cách gọi onStop () hoặc onDestroy () hoặc ít nhất là finalize (). Trình gỡ lỗi thực hiện điều này, cũng như hệ điều hành khi tắt máy.
Bạn có thể đặt ứng dụng của mình để bẫy các sự kiện SIG_HUP để buộc thoát khỏi dòng lệnh.
Lần duy nhất bạn giết máy ảo ứng dụng là ở trạng thái ANR (đã là thây ma). ANR phải được sửa. Không bao giờ triển khai một ứng dụng có thể vào trạng thái này. Nó vô cùng thô lỗ.
Bạn có thể sử dụng Google Analytics và Cửa hàng Play để theo dõi những điều này trong quá trình triển khai. Bạn không muốn người dùng tức giận đưa ra đánh giá ANR một sao sau khi phải khởi động lại do ứng dụng zombie của bạn. Rất tệ.
Hãy nhớ rằng Android là Linux: hãy coi nó như một hệ điều hành thực sự và tôn trọng vòng đời của ứng dụng, nếu không, bạn chắc chắn sẽ phải đối mặt với Ngày tận thế thây ma đáng sợ.
Tái bút: Nếu bạn không thích sự tương tự về Zombie, vậy còn Fantasia thì sao?