Làm thế nào để whatsapp ở trong nền mà không bị đóng cửa?


11

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?


3
Vì họ điều hành một dịch vụ mà tôi nói :) Tôi không sử dụng WA hoặc FB, vì vậy tôi không thể chắc chắn ở đây: Để ưu tiên cao hơn, các ứng dụng có thể đăng ký dịch vụ và có biểu tượng hiển thị trong khay thông báo, vì vậy OOM Kẻ giết người coi chúng là "quan trọng hơn" và "giết chết những thứ khác thay thế", nếu có thể.
Izzy

1
Tôi nghĩ rằng có một biểu tượng trong khay là không liên quan (dù sao WA của tôi không có biểu tượng nào). Miễn là dịch vụ chạy như ở "quy trình dịch vụ" hoặc mức độ ưu tiên cao hơn .
jiggunjer

Câu trả lời:


9

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ì.


Có cách nào để ưu tiên whatsapp qua facebook, ví dụ như sử dụng tasker để giết thứ gì đó trước tiên để ngăn OOMK giết ứng dụng khác không? Tôi nghe nói quản lý tác vụ là xấu, nhưng loại bỏ qua này có vẻ mong muốn?
jiggunjer

Câu trả lời này có một lời giải thích tốt đẹp! Bạn có bất kỳ nguồn chính thức để liên kết để chứng thực logic?
asgs

Tôi đã viết câu trả lời này dựa trên kinh nghiệm của tôi với tư cách là một nhà phát triển Android - có rất nhiều tài liệu để khám phá cách OOM Killer hoạt động và tìm kiếm google đơn giản sẽ giúp xử lý nó. Tôi đã không thêm các liên kết đó trong bài đăng của mình để giữ cho nó đơn giản và dễ hiểu với suy nghĩ của giáo dân và không phải là quan điểm của nhà phát triển.
AADAndroidEnthusiasts
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.