为了保护资源并防止内存泄漏,每当应用程序从一个活动转到另一个活动时,我在onPause事件中调用finish()。我认为它工作正常,但当我尝试旋转屏幕时,应用程序崩溃 - 错误是“重复完成请求” 我如何防止这种情况,是否有办法在onPause事件中检测应用程序是进入下一个活动还是只是改变方向? 是否有更好的方法来保存内存然后使用完成?
感谢您的帮助!
答案 0 :(得分:13)
你可以尝试Intent.FLAG_ACTIVITY_NO_HISTORY标志。一旦新活动出现在他们面前,这将完成您的活动。
您可以在开始活动时将其置于意图中:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
或者您可以在清单中设置它,以便您的活动始终带有此标记:
android:noHistory="true"
作为该活动的<activity ... />
标记中的属性。
这样,您就可以避免尝试在finish
中呼叫onPause
。我认为这比试图确定框架何时会调用finish
本身更好。
答案 1 :(得分:2)
测试你是否活动已经完成了this.isFinishing()(这是你的活动)?
答案 2 :(得分:1)
这里只是一个黑暗的镜头,但你在onPause实现中调用super.onPause()吗?