2010-03-19 28 views
10

Từ tài liệu cho android.app.Application:android.app.Application lớp con, onTerminate không được gọi là

cơ sở lớp học dành cho những người cần phải duy trì trạng thái ứng dụng toàn cầu.

Tôi đang sử dụng phân lớp của riêng mình để duy trì một đối tượng mà tôi đang sử dụng để truy vấn máy chủ. Ngoài tài liệu:

onTerminate() Được gọi khi ứng dụng dừng.

Tuy nhiên, onTerminate() trong lớp học của tôi không bao giờ được gọi. Tôi nhấn nút quay lại trong khi xem hoạt động chính của mình và mọi thứ dường như tắt. Phương thức hoạt động chính của tôi là onDestroy() được gọi và isFinishing() trả về true, nhưng phương thức onTerminate() của android.app.Application không bao giờ được gọi.

Tại sao điều này? Tôi đang thiếu gì? Có cái gì đó đang giữ nó mở?

+0

Hãy thử sử dụng thư viện, trình duyệt, khởi chạy trò chơi hạng nặng để nền tảng thiếu tài nguyên. Vẫn không gọi? – yanchenko

+0

Thử cài đặt trình xử lý tín hiệu cho SIGKILL từ NDK. Không chắc chắn nếu điều này sẽ làm việc, và bạn sẽ không thể làm nhiều trong nó anyway ... –

Trả lời

15

Điều này có thể liên quan đến thực tế là mặc dù bạn thoát khỏi ứng dụng, quá trình cho nó vẫn chạy trong nền để khởi động lại ứng dụng sẽ sử dụng cùng một quy trình.

Ngoài ra, các trạng thái javadocs không dựa vào mã onTerminate được gọi.

Lưu ý: không bao giờ phụ thuộc vào phương thức này được gọi; trong nhiều trường hợp, quy trình nộp đơn không cần thiết sẽ đơn giản bị giết bởi hạt nhân mà không cần thực hiện bất kỳ mã ứng dụng nào .

+9

Lưu ý rằng các tài liệu đã được cập nhật để được rõ ràng hơn: fn này sẽ không bao giờ được gọi trên một thiết bị Android sản xuất. – Tom

Các vấn đề liên quan