Tôi muốn thực hiện hành động/sự kiện khi ứng dụng bị giết từ trình quản lý tác vụ hoặc bất kỳ ứng dụng nào khác. Có cách nào để thực hiện hành động khi ứng dụng bị giết không. Ứng dụng của tôi đang chạy ở chế độ nền như dịch vụ. Nếu tôi chấm dứt ứng dụng thì dừng dịch vụ chính. Tôi muốn bắt đầu lại.Hành động trên ứng dụng bị giết trong android
Trả lời
Không, không có cách nào đáng tin cậy để biết đơn đăng ký của bạn có bị giết bởi một quy trình khác hay không. Toàn bộ điểm "giết" một ứng dụng là chấm dứt nó càng sớm càng tốt, mà không để cho nó chạy bất kỳ mã nào.
== Không thực sự sử dụng các đề xuất sau trong ứng dụng sản xuất. Chúng ở đây hoàn toàn là giải pháp kỹ thuật tiềm năng, nhưng nói chung không phải là một ý tưởng tốt cho các ứng dụng chạy trên thiết bị người dùng cuối. ==
Có thể sử dụng IBinder.linkToDeath()
từ ứng dụng phụ, hoạt động như màn hình cho ứng dụng chính của bạn. Tuy nhiên, bạn cũng sẽ phải thuyết phục người dùng cài đặt ứng dụng thứ cấp. Nếu bạn có thể làm điều đó, bạn có thể thiết lập giám sát hai phía giữa hai ứng dụng, và có một trong số chúng khởi động lại nếu ứng dụng thứ hai bị giết.
Bạn cũng có thể cố gắng đặt báo thức qua số AlarmManager
kích hoạt thường xuyên như vậy, để khởi động lại ứng dụng của bạn nếu ứng dụng đó bị giết. Tuy nhiên, nếu thời gian báo thức của bạn quá lớn, bạn có nguy cơ có khoảng thời gian nhất định mà ứng dụng của bạn không chạy. Và nếu khoảng thời gian của bạn quá nhỏ, rất có thể ứng dụng của bạn sẽ không được Google cho phép trong Cửa hàng Google Play và phân tích ứng dụng phần mềm độc hại trên điện thoại (JB +) có thể khởi động. Ngoài ra, báo động đá quá thường xuyên sẽ tiếp tục thiết bị được đánh thức và xả pin rất nhanh.
Bạn có thể cho tôi biết làm thế nào tôi có thể IBinder.linkToDeath() .. –
Bạn khai báo một dịch vụ trong một trong các ứng dụng. Mặt khác, bạn gọi 'bindService()', để có được một trình khách 'IBinder' cho dịch vụ đó. Bạn không cần phải thực hiện giao diện của riêng bạn trên nó, vì mục đích duy nhất của bạn là phát hiện quá trình chết. Khi bạn nhận được 'IBinder' trong ứng dụng thứ hai, bạn gọi' bindToDeath() 'với một thể hiện của một lớp thực hiện' IBinder.DeathRecipient'. Nếu quá trình ứng dụng đầu tiên bị chết, thì 'binderDied()' của cá thể đó sẽ được gọi, đó là một dấu hiệu cho ứng dụng thứ hai mà ứng dụng đầu tiên đã chết. –
Nếu bạn cần tắt ứng dụng đầu tiên, bạn sẽ phải tìm ra một cơ chế phức tạp hơn để thông báo cho ứng dụng thứ hai để nó có thể phát hành 'IBinder' mà nó giữ, hoặc nó sẽ giữ ứng dụng đầu tiên còn sống miễn là ứng dụng thứ hai còn sống. –
Nếu bạn giết một số quá trình, bạn chỉ cần giết nó, vì vậy nó ngừng hoạt động ngay lập tức. Không có sự kiện nào được gửi đến ứng dụng.
Tôi đã tìm kiếm điều tương tự và câu trả lời tôi tìm thấy là: KHÔNG, ứng dụng không chuyển đến OnDestroy()
hoặc bất kỳ thứ gì tương tự.
- 1. dịch vụ android tự khởi động lại trên ứng dụng bị giết
- 2. Ngữ cảnh ứng dụng bị giết nhưng hoạt động không
- 3. Giết ứng dụng android khi tạm dừng
- 4. Hệ điều hành Android có phát hành một wakelock nếu ứng dụng hoặc dịch vụ giữ nó bị giết không?
- 5. Khởi động lại ứng dụng Android sau khi quá trình bị giết
- 6. Dịch vụ Android đã bị giết
- 7. Dịch vụ Foreground bị giết bởi Android
- 8. android giết chủ đề cụ thể trên sự kiện thanh hành động
- 9. Móc treo trên thiết bị giết
- 10. ActionBarCompat - Hành động biểu tượng ứng dụng (nhấp chuột) không hoạt động trên các thiết bị 4.0
- 11. Android báo động bị hủy sau khi đóng ứng dụng
- 12. 'Bundle savedInstanceState' có còn hoạt động sau khi Ứng dụng bị giết không?
- 13. Tự động chạy ứng dụng trên nhiều thiết bị trong Android Studio
- 14. android: ứng dụng thử nghiệm trên thiết bị thực
- 15. Android: cách tránh khỏi quá trình bị giết
- 16. Ứng dụng HTML5 ngoại tuyến trên thiết bị Android
- 17. Làm cách nào để mô phỏng ứng dụng bị giết trong nền?
- 18. Làm thế nào để thực hiện dọn dẹp khi ứng dụng bị giết trong nền?
- 19. lỗi ứng dụng android dequeuebuffer trên thiết bị snapdragon
- 20. Ứng dụng Android Phonegap khởi động lại thay vì tiếp tục, mặc dù nó không bị hệ điều hành
- 21. Tạo chứng chỉ ứng dụng khách trên thiết bị Android
- 22. Chủ đề có bị giết trước khi hoạt động kết thúc trong Android không?
- 23. nhiệm vụ android giết
- 24. bộ nhớ cache ứng dụng không hoạt động trên thiết bị Android (hoạt động tốt trên trình duyệt chrome)
- 25. ứng dụng android không phát hành Bluetooth đúng cách trên lối ra
- 26. Hành vi lạ của Android trong khi thay đổi tên ứng dụng và nhãn hoạt động
- 27. Ứng dụng Android khởi động lại trên thay đổi hướng
- 28. Làm cách nào để ngăn ứng dụng/dịch vụ Android của tôi bị "giết" khỏi trình quản lý tác vụ?
- 29. Thông báo ứng dụng Facebook trên thiết bị di động
- 30. Hành vi video HTML5 trên thiết bị di động
Hãy nhớ rằng nói chung các dịch vụ luôn bật lên do tác động của chúng trên thiết bị (sử dụng CPU, tuổi thọ pin, v.v.). Nó có thể giúp đỡ nếu bạn cung cấp thêm chi tiết về kịch bản của bạn là gì, để mọi người ở đây có thể cung cấp cho bạn các cách tiếp cận khả thi hơn để đạt được nó. –
"Tôi muốn bắt đầu lại" - điều bạn muốn không quan trọng. Những gì * người dùng của bạn * muốn có vấn đề. Nếu người dùng của bạn muốn ứng dụng của bạn đang chạy, họ sẽ không buộc phải dừng ứng dụng đó. Nếu bạn không tôn trọng người dùng của bạn, không ai sẽ tôn trọng bạn. – CommonsWare