低内存时重新创建Android活动/片段

时间:2015-07-01 16:23:13

标签: android android-activity fragment low-memory

我正在实施一个具有多个活动和基于片段的应用。 我遇到的是,如果我开始活动,并在片段之间传输,现在如果我按下主页按钮回到主屏幕。然后我开始使用内存消耗的应用程序。 当我回到我的应用程序时,我可以知道它已经重新创建并且片段已经恢复。但是,当我单击后退时,片段返回堆栈似乎是错误的,片段之间的自定义动画也不再受影响。

在我的情况下,我真的不希望系统在从低内存返回时重新创建。 有没有办法在低内存而不是重新创建活动时强制重启应用程序?

2 个答案:

答案 0 :(得分:0)

您可能知道,最好的解决方案是修复您的活动,以便他们正确处理生命周期事件和保存/恢复状态。然后,当您的应用进入后台并返回到前台时,用户会看到他/她最后离开时的应用。这是最好的用户体验以及Android多任务处理的工作方式。

如果您急需解决方法,请考虑使用活动的onTrimMemory()方法。使用整数代码调用此方法,该代码报告活动状态的更改,例如活动不再可见时,以及应用程序位于最近使用的应用程序列表中的位置。例如,您可以检查TRIM_MEMORY_UI_HIDDEN并致电finish()以结束活动。

同样,这不是首选解决方案,只是快速修复。

答案 1 :(得分:0)

如果您使用的是API级别13或更低版本,也可以使用onLowMemory()

  

当整个系统内存不足时调用此方法,并且   主动运行进程应该减少内存使用量。虽然   通常它没有定义调用它的确切点   将在所有后台进程被杀死时发生。那是,   在达到主机服务的杀戮过程之前   我们希望避免杀戮的前景UI。

     

您应该实现此方法以释放任何缓存或其他   你可能持有的不必要的资源。系统会   从这个方法返回后为你执行垃圾收集。

     

最好,你应该实现onTrimMemory(int)   ComponentCallbacks2基于增量卸载资源   各种级别的内存需求。该API可用于API级别   14和更高版本,所以你应该只使用这个onLowMemory()方法作为   旧版本的后备版本,可以像对待一样处理   具有TRIM_MEMORY_COMPLETE级别的onTrimMemory(int)。

有关详细信息:http://developer.android.com/reference/android/app/Activity.html