android finish 不起作用,在Android活动上调用finish()实际上并没有完成

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

我打了finish(),但我的活动仍在继续。

我有一个活动,该活动由主活动屏幕上的菜单调用。 在我的活动的finish()方法中,我具有以下代码片段:

// 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()将退出活动。 不是这样吗? 在哪里可以找到有关此方法的更多信息?

Peter Nelson asked 2020-02-06T11:11:32Z

6个解决方案

75 votes

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

另外,请参见以下问题:关于android中的finish()

Nanne answered 2020-02-06T11:12:15Z

6 votes

finish()只是告诉活动要完成的工作,例如。 关闭,调用onPause,将结果报告给父级等。它不执行exit()调用或执行任何操作。

您应该在finish()调用之后返回。

Robby Pond answered 2020-02-06T11:12:39Z

4 votes

除了其他答案外,您可能还调用了(Re)onStart、onResume和onPause。

我之所以这样说,是因为在下面的链接中,有一个表说,要杀死一个活动,首先要在Stop和onDestroy上对其进行onPause(并且可能但不能保证)调用。

参考活动

Pedro Loureiro answered 2020-02-06T11:13:09Z

0 votes

Finish完成了该活动,但取决于UI进行任何UI交互的主循环。 从onCreate返回后,您必须等待直到UI循环运行。

Falmarri answered 2020-02-06T11:13:29Z

0 votes

在这种情况下,应使用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();

}

}

WJr answered 2020-02-06T11:13:49Z

0 votes

放入清单:

android:noHistory="true">

避免将其保存在系统的历史记录堆栈中

CodeToLife answered 2020-02-06T11:14:14Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值