在Android活动上调用finish()实际上并没有完成

我叫finish()但我的活动继续进行。

我有一个活动是由主活动屏幕上的菜单调用的。 在我的activity的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()设置断点。 如果我从debugging器中直接进入SummarizeCurrentEvent() 。 我认为finish()会退出活动。 不是这样吗? 我在哪里可以find更多有关这种方法的信息?

finish之后,您应该放置一个return语句,因为调用finish的方法将被完全执行。

另外,看到这个问题: 关于完成()在Android

finish()只是告诉活动完成它需要做的事情,例如。 closures,调用onPause,报告结果给父母等。它不会做一个exit()调用或任何东西。

完成()调用后应该返回。

添加到其他答案,你仍然可能(Re)onStartonResumeonPause调用。

我这样说是因为在下面的链接中有一个表格,表示对于一个要被杀死的活动,首先在Stop和onDestroy上的onPause(可能但不是保证)调用它。

参考活动

完成完成活动,但是取决于执行任何UI交互的主循环。 你必须等到UI循环运行,这是从onCreate返回后。

这是应该使用try...catch语句的情况。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { //...some initialization... // Make sure there are some events in the list. if (theEventArrayList.isEmpty()){ throw new Exception("Event List is empty"); } SummarizeCurrentEvent(); graphEvents(); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); finish(); } }