Android:模拟长时间运行

Android:模拟长时间运行,android,Android,我想当你快速试用30分钟时,每个人都会体验到他的应用程序工作得很棒。但是,当一个应用程序在设备的后台放置一天左右时,你会收到NullPointerExceptions,而事情并不像预期的那样工作,因为垃圾收集器偷了你的东西。 有什么方法可以模拟一个应用程序在后台长时间运行吗?你真的不需要等待任何特定的时间。你只需要做一些消耗记忆的事情。这可能是您为任务创建的一个特殊应用程序,但您实际上不需要这样做 根据我的经验,大多数游戏似乎都很有效。具有大量图形的游戏往往工作得最好,因为它们在纹理等方面占用了

我想当你快速试用30分钟时,每个人都会体验到他的应用程序工作得很棒。但是,当一个应用程序在设备的后台放置一天左右时,你会收到
NullPointerExceptions
,而事情并不像预期的那样工作,因为
垃圾收集器偷了你的东西。

有什么方法可以模拟一个应用程序在后台长时间运行吗?

你真的不需要等待任何特定的时间。你只需要做一些消耗记忆的事情。这可能是您为任务创建的一个特殊应用程序,但您实际上不需要这样做

根据我的经验,大多数游戏似乎都很有效。具有大量图形的游戏往往工作得最好,因为它们在纹理等方面占用了大量内存。愤怒的小鸟或糖果粉碎也可以工作,即使没有高级图形或繁重的处理(可能是因为同样的原因,它们会啃坏电池)。通常情况下,在玩了大约一个关卡后,你可以回到你的活动中,看看丢失了什么


最理想的情况是,您将使用智能的方法来持久化/初始化数据,因此这应该不是什么大问题,但偶尔您(或用户)会遇到意外情况,这可以帮助您跟踪它。

设置->开发人员选项->后台进程限制->最多1个进程


当你玩得开心的时候,别忘了把它放回去。干杯。

没有休眠这回事。若休眠,你们的意思是仍然在RAM中,暂停状态,那个么在30分钟后测试它并没有任何意义,若它仍然在RAM中。一切都将是一样的。GC将只影响不再被引用的对象。所以GC本身不会影响任何事情。然而,影响应用程序生命周期的是活动或片段的重新创建,可以使用上述方法进行测试。同样,GC将收集未引用的对象,即使活动在前台,我毫不怀疑这一点。但是,在两种状态下,它都不会收集引用的对象。当您在活动中使用的对象位于该活动内时,引用将签出。如果你知道这是相反的事实,请提供参考。但是,我完全没有遇到您所描述的内容。来自Dev SDK:“当您的活动停止时,活动对象将保持驻留在内存中,并在活动恢复时被调用。您不需要重新初始化在导致恢复状态的任何回调方法期间创建的组件。”因此,除非你在做一些不寻常的事情(当然你需要确保一切正常),否则GC不会收集任何东西;因为这些东西不是垃圾。然而因此,您唯一需要检查的是活动是否被破坏。同样,您可以使用上面的方法来实现这一点,您得到了什么
NullPointerException
s?