Xin chào Chúng tôi đang đối mặt với một vấn đề lạ trong ứng dụng Android của chúng tôi. Trong ứng dụng của chúng tôi, chúng tôi đang lưu trữ tất cả các đối tượng/dữ liệu cần thiết trong một đối tượng chung (được gọi là đối tượng A) khi chúng tôi khởi động ứng dụng (Hoạt động đầu tiên). Chúng tôi đã lưu trữ chính bối cảnh trong đối tượng đó. Bất cứ khi nào chúng ta cần ngữ cảnh trong ứng dụng của chúng tôi, chúng tôi đang nhận được bối cảnh từ đối tượng A và sử dụng nó. Tất cả các trường hợp của nó hoạt động tốt ngoại trừ trường hợp dưới đây.
i) Trong khi ứng dụng của chúng tôi ở chế độ nền, chúng tôi đã chơi một số trò chơi cao cấp. Bây giờ chúng tôi đã quay lại ứng dụng thông qua màn hình thu nhỏ (các ứng dụng gần đây). Đột nhiên, ứng dụng bị hỏng.
ii) Nếu chúng tôi buộc dừng ứng dụng thông qua Cài đặt và quay lại ứng dụng thông qua màn hình thu nhỏ thì cùng một sự cố xảy ra.Đối tượng trở thành null
Cả hai trường hợp, Object A trở thành null (nó có thể bị xóa bởi GC), vì vậy tất cả các hoạt động phụ thuộc vào đối tượng A nhận ngoại lệ.
Tại sao nó lại xảy ra? Làm cách nào để ngăn GC thu thập đối tượng A? Làm thế nào chúng ta có thể đối phó với lực lượng dừng lại? Vui lòng đưa ra bất kỳ ý tưởng nào.
Bạn không thể buộc GC hoặc hệ thống hủy quá trình của bạn. Bạn nên tìm một cách để tuần tự hóa/deserialize đối tượng của bạn trong trường hợp như vậy. –
Đây có thể là khái niệm quan trọng nhất bạn nên hiểu khi viết ứng dụng Android. http://developer.android.com/training/basics/activity-lifecycle/index.html – Kuffs
Android (trên thực tế, Dalvik) KHÔNG GC đối tượng riêng lẻ trừ khi ứng dụng của bạn đang chạy và không có tham chiếu đến nó. Tôi không biết huyền thoại này bắt đầu từ đâu. ** Ứng dụng ** của bạn có thể bị giết, trong trường hợp đó tất cả bắt đầu từ đầu. Nếu bạn cần lưu trạng thái, sau đó tuần tự hóa bằng cách sử dụng 'onPause()' và/hoặc 'onStop()'. Lưu ý, 'onDestroy()' chỉ hữu ích nếu bạn 'kết thúc()' một hoạt động. BTW, nếu 'ngữ cảnh' mà bạn đang lưu trữ là một ngữ cảnh' Hoạt động', bạn đang làm tất cả sai. – Simon