我正在呼叫finish()
,但我的活动仍在继续。
我有一个活动,该活动由主活动屏幕中的菜单调用。在我的活动的onCreate()
方法中,我有以下代码片段:
// Make sure there are some events in the list.
if (theEventArrayList.isEmpty()){
Toast.makeText(this, "Event List is empty", Toast.LENGTH_LONG).show();
finish();
}
SummarizeCurrentEvent();
graphEvents();
如果列表为空,则会显示Toast,我可以在调用finish()
时设置断点。如果我从调试器中的步骤开始,它将直接转到SummarizeCurrentEvent()
。我以为finish()
会退出活动。这不是这种情况吗?我在哪里可以找到有关此方法的更多信息?
答案 0 :(得分:72)
您应该在return
之后添加finish
语句,因为调用finish
的方法将完全执行。
另请参阅此问题:about finish() in android
答案 1 :(得分:6)
finish()只是告诉活动做它需要做的事情来完成,例如。关闭,调用onPause,将结果报告给父级等。它不会执行exit()调用或其他任何操作。
你应该在完成()之后回来。
答案 2 :(得分:4)
添加其他答案,您仍然可能调用(Re)onStart
,onResume
和onPause
。
我之所以这样说是因为在下面的链接中,有一个表格表示对于一个要杀死的活动,首先在Stop和onDestroy上调用onPause(可能但不保证)。
参考Activity
答案 3 :(得分:0)
Finish完成活动,但是由主循环完成任何UI交互。您必须等到UI循环运行,即从onCreate
返回后。
答案 4 :(得分:0)
应该使用PHP
语句。
try...catch
答案 5 :(得分:0)
放入清单:
<activity android:name=".MainActivity"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
避免将其保存在系统的历史记录堆栈中