当app在后台时,Application对象隐式拥有的对象是垃圾回收

时间:2015-09-14 08:02:19

标签: android garbage-collection ownership

我遇到一种情况,即我的Android应用程序在后台运行一段时间后会崩溃。对我来说,这似乎是因为我的一些物品是垃圾收集的。我的结构和问题如下

对象A由Android应用程序对象拥有,并在onCreate()方法中创建。

require 'rubygems'
require 'chef/config'
require 'chef/log'
require 'chef/rest'

chef_server_url = 'http://127.0.0.1'
client_name = 'admin'
signing_key_filename = '/root/admin.pem'

rest = Chef::REST.new(chef_server_url, client_name, signing_key_filename)

data = {"username" => "admin", "password" => "4dm1n1str4t0r" }
rest.post_rest('authenticate_user', data)

在对象A的构造函数中创建ArrayList。

ArrayList通过异步调用(从服务器下载)填充B类对象。

现在,当我的应用程序已经在后台运行了一段时间(通常是整晚)并且我恢复它时,它会因为ArrayList为空而崩溃。 (ArrayList在正常使用期间从不为空,绝对不是在我将应用程序发送到后台之前(昨晚)。

所以我猜测我的B对象是垃圾收集的,我真的不明白这是怎么发生的,因为它们是由Android应用程序对象隐式拥有的。

有没有人对此有任何意见?

1 个答案:

答案 0 :(得分:1)

你应该覆盖Application类中的onTrimMemory()和onLowMemory()回调 - 至少这些回调将警告你即将丢失数据