在方向更改期间onPause中的活动调用完成崩溃

时间:2011-03-16 16:14:03

标签: android events memory-management orientation

为了保护资源并防止内存泄漏,每当应用程序从一个活动转到另一个活动时,我在onPause事件中调用finish()。我认为它工作正常,但当我尝试旋转屏幕时,应用程序崩溃 - 错误是“重复完成请求” 我如何防止这种情况,是否有办法在onPause事件中检测应用程序是进入下一个活动还是只是改变方向? 是否有更好的方法来保存内存然后使用完成?

感谢您的帮助!

3 个答案:

答案 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()吗?