调用finish()方法并不能结束活动。

7

当我的应用因为特定原因暂停时,我希望能够结束它。最近我的代码一直运行良好,但是最近 finish() 方法因某些原因没有完成它的工作。此外,当调用 finish() 方法时,我会得到以下的 LogCat 消息:

12-31 18:01:23.445: W/ActivityManager(481): Duplicate finish request for ActivityRecord{42465370 u11 "myapplicationpackage"}

请问有人能帮我解决这个问题吗?

OnPause() 方法

@Override
protected void onPause() {
    super.onPause();
    finish();
}

在onPause中调用finish()不是一个好主意。你可以在“具体原因”发生时调用finish(),例如在事件处理中等。 - Sudar Nimalan
你可能想看一下这段代码,它展示了“重复完成请求”的条件。http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/com/android/server/am/ActivityStack.java - Kristy Welsh
2个回答

12

您可以通过调用 if (isFinishing()){} 来检查您的活动是否已经结束,并仅在未结束时调用 finish或者,您可能希望在清单文件中指定 android:noHistory="true" ,这将在用户导航离开它后实际上结束您的活动。


https://dev59.com/1HXYa4cB1Zd3GeqP3zkD - Kristy Welsh

-7
你很可能有重复运行的活动副本。我建议将所有活动放在一个父级下,并使用


finishall()

9
没有finishall方法。 - uthark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接