3

我继承了一个使用非 Android 实践实现的大型 Android 应用程序。该应用程序有几十个活动,并将该应用程序用作缓存数据的单例。应用程序在长时间空闲后崩溃 - 这可能发生在设备位于单个 Activity 或从最近的应用程序历史记录重新启动时(通常是 null refs 问题。)

我的问题是 - 是否有技术或工具可以忠实地强制资源释放行为发生而不等待操作系统回收内存?

4

2 回答 2

1

如果您想通过榨汁机运行应用程序,请在设备的开发选项下,勾选Don't keep Activities。但是,这不会解决 Application 类下的单例存储;Application 类只有在应用程序完全被强制耗尽内存后才会被释放。

于 2013-08-08T17:09:16.380 回答
0

首先,如果您需要保留任何状态数据,您应该使用内置的生命周期方法并将缓存行为从您的Application类中提取出来。使用 savedInstanceStateBundleParcelable接口。

您可以采取一些措施来确保资源在活动来来去去时被破坏。在onDestroy()(或者onDestroyView()如果您在片段中),将所有成员变量设置为空。避免持有对其他活动的引用。Android 将调用生命周期方法并尝试回收内存。同一活动的新实例可以在未来创建,但旧的引用可能会因为仍然被指向而持续存在。

于 2013-08-08T17:18:19.603 回答