Android thường giết các tiến trình nền nếu chúng không có thông báo liên tục. Tại sao các ứng dụng như whatsapp và Facebook không bị giết?
Android thường giết các tiến trình nền nếu chúng không có thông báo liên tục. Tại sao các ứng dụng như whatsapp và Facebook không bị giết?
Câu trả lời:
Android thường giết các tiến trình nền nếu chúng không có thông báo liên tục.
Thường thì đây là trường hợp, nhưng Android OutOfMemory Killer (thành phần trong Android chịu trách nhiệm tiêu diệt các quy trình) sử dụng logic và tiêu chí khá phức tạp để tiêu diệt các ứng dụng và quy trình lưu trữ các ứng dụng này.
Trong Android, mọi ứng dụng đều chạy trong Quy trình Linux. Mỗi quy trình Linux có một Máy ảo (Máy ảo Dalvik hoặc Máy ảo ART) chạy bên trong nó. Có một giới hạn về bộ nhớ mà một quá trình có thể yêu cầu và nó khác với các thiết bị khác nhau và cũng khác nhau đối với điện thoại và máy tính bảng.
Khi Android sắp hết dung lượng bộ nhớ (có thể là do có rất nhiều ứng dụng đang chạy đồng thời trong một thiết bị) Kẻ giết người OutOfMemory xuất hiện và bắt đầu giết các quá trình của Ứng dụng chạy nền trước.
Giờ đây, các ứng dụng như WhatsApp, Facebook sử dụng một thứ gọi là cơ chế thông báo Dịch vụ và Đẩy. Dịch vụ cho phép ứng dụng chạy một số mã chạy ở chế độ nền và mặc dù nếu Ứng dụng bị giết bởi OOM Killer, Dịch vụ có thể được khởi động lại một lần nữa bởi Android khi có đủ bộ nhớ để chạy.
Tại sao các ứng dụng như whatsapp và Facebook không bị giết?
Điều này không đúng vì Android có thể tắt ứng dụng dựa trên trạng thái của chúng (chẳng hạn như nền trước hoặc nền). Chỉ là Ứng dụng và thành phần của chúng (như Dịch vụ) đang được khởi động lại như khi chúng nhận được thông báo Đẩy, để người dùng có thể tương tác với ứng dụng.
Vì vậy, khi nhận được thông báo đẩy (có nghĩa là tin nhắn WhatsApp), Android có thể khởi động lại thành phần của ứng dụng đã bị giết (trong trường hợp này là WhatsApp).
Bằng cách này, Android đang ẩn các chi tiết phức tạp về quản lý bộ nhớ và quản lý quy trình từ người dùng và đảm bảo rằng người dùng có thể tương tác với một ứng dụng mà không gặp vấn đề gì.