我正在实施一个具有多个活动和基于片段的应用。 我遇到的是,如果我开始活动,并在片段之间传输,现在如果我按下主页按钮回到主屏幕。然后我开始使用内存消耗的应用程序。 当我回到我的应用程序时,我可以知道它已经重新创建并且片段已经恢复。但是,当我单击后退时,片段返回堆栈似乎是错误的,片段之间的自定义动画也不再受影响。
在我的情况下,我真的不希望系统在从低内存返回时重新创建。 有没有办法在低内存而不是重新创建活动时强制重启应用程序?
答案 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