2010-11-09 44 views
10

Tôi sử dụng ứng dụng Android của ứng dụng Bối cảnh như một khu vực lưu trữ cho thông tin "trạng thái hiện tại" cho ứng dụng của tôi.Bối cảnh ứng dụng Android có bị phá hủy không?

Tôi thấy rằng trong trường, có trường hợp khi thông tin này biến mất trên thiết bị của một số người gây ra nhiều NullPointerExceptions vì tôi mong đợi dữ liệu ở đó khi ứng dụng tiếp tục và bắt đầu xây dựng lại các hoạt động cần thiết. Điều này thường xảy ra khi người dùng nhấn "Home", thực hiện điều gì đó khác, sau đó cuối cùng quay trở lại ứng dụng - nó cố gắng quay trở lại vị trí trước đó, nhưng bối cảnh ứng dụng đã mất đi tất cả những gì đã lưu trước đây của nó thông tin trạng thái (trong trường hợp của tôi, một vài số nguyên và một vài chuỗi).

Tôi biết đây là một câu hỏi rất mơ hồ, nhưng có trường hợp nào (không phải là người dùng sử dụng "quay lại" để hoàn toàn thoát khỏi ứng dụng) mà ứng dụng Bối cảnh bị hủy hoàn toàn ngay cả khi ứng dụng không bị chấm dứt?

Có cách nào tốt hơn để duy trì thông tin trạng thái liên tục không?

Trả lời

4

Có, ứng dụng có thể bị giết và khởi động lại nếu người dùng rời khỏi ứng dụng trong một thời gian. Bạn có thể muốn đọc phần này trên processes and lifecycles.

Bạn nên tìm một nơi thích hợp để lưu trạng thái vào cửa hàng liên tục. Nếu nó chỉ là một vài số nguyên và chuỗi, nó sẽ được khá đơn giản để lưu chúng vào sở thích được chia sẻ khi họ thay đổi. Xem data storage - shared preferences.

+0

Tôi đã tìm được nhiều. Có bất kỳ điều gì cụ thể mà tôi có thể làm để * ép buộc * tình huống này (Đơn của tôi bị giết) để tôi có thể tái tạo nó không? Nó dường như xảy ra khá một chút trong lĩnh vực này, nhưng tôi đã * không bao giờ * có thể tái tạo nó trên Nexus One của tôi tại địa phương. Trong tình huống này là onTerminate() sau đó được gọi vào quá trình ứng dụng? – user435210

+0

@ user435210 1. Nhìn vào trang có vòng đời của ứng dụng - nó giải thích gần như tất cả mọi thứ bạn cần biết để quản lý vòng đời của ứng dụng của bạn. 2. Bạn có thể giết ứng dụng của mình bằng cách sử dụng phần 'Cài đặt/Ứng dụng/Quản lý ứng dụng/YourApp' - hoặc bằng cách sử dụng bất kỳ số lượng ứng dụng nào có thể tải xuống trên thị trường Android. –

+1

Nếu bạn muốn tái tạo nó theo cách "thân thiện" (không bắt buộc), tôi sẽ về nhà, sau đó khởi động mọi ứng dụng bạn có thể tìm thấy trên hệ thống của mình để Android buộc phải đóng ứng dụng của bạn. Như nó lưu ý trong tài liệu, onTerminate có thể được gọi, nhưng đây không phải là một đảm bảo. Ví dụ: nếu ứng dụng của bạn bị đóng bởi một ứng dụng diệt tất cả ứng dụng, rất có thể ứng dụng sẽ không được gọi. –

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