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

Pet*_*ter 0 events android memory-management orientation

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

感谢帮助!

Mat*_*lis 13

您可以尝试Intent.FLAG_ACTIVITY_NO_HISTORY标志.一旦新活动出现在他们面前,这将完成您的活动.

您可以在开始活动时将其置于意图中:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

或者您可以在清单中设置它,以便您的活动始终带有此标志:

android:noHistory="true"
Run Code Online (Sandbox Code Playgroud)

作为该活动<activity ... />标签中的属性.

这样,就可以避免试图调用finishonPause.我认为这比试图弄清楚框架何时会调用finish自己更好.