活动上的finish()关闭应用程序,然后简要显示上一个应用程序



在我的应用程序中,Activity1使用"startActivityForResult()"启动Activity2。

Activity2完成后,将调用以下代码:

Activity2.java

private void finishActivity(final boolean accepted)
{
  Intent returnIntent = new Intent();
  setResult(accepted ? RESULT_OK : RESULT_CANCELED, returnIntent);
  finish();
}

Activity1接收此回调,如果结果不是result_OK,它也会结束。

Activity1.java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == Globals.REQUEST_CODE_TOS)
  {
    if (resultCode != RESULT_OK)
      finish();
  }
}

Activity1完成后,应用程序将按预期关闭。

问题——

然而,在我的应用程序关闭后,堆栈上的前一个应用程序不是进入主屏幕,而是短暂地向前启动,然后也关闭!然后我进入主屏幕。

在Android错误跟踪器中,我看到了一个类似的错误,列出了按下后退按钮时的情况,我认为这与调用finish()相同:

https://code.google.com/p/android/issues/detail?id=71067

我在运行4.4.4的Nexus 5上看到了这一点。

这只是一个bug吗?或者这种行为有什么变通办法吗?

编辑--

澄清我想要的行为:

在谷歌地图中,如果你拒绝TOS弹出窗口,应用程序将关闭,你将直接进入主屏幕。之前打开的一些应用程序没有尴尬的闪光。

这显然与您在问题中联系的问题相同(我已经关注了几个月,因为我自己也拥有Nexus 5)。它实际上在AOSP中得到了修复,但这个特定的修复似乎还没有进入N5。我已经为棒棒糖的修复祈祷了,但我们拭目以待。

至于变通方法,我认为目前还不存在,尽管如果我错了,我很想知道——我自己开发了一个类似的应用程序(当通过后退按钮关闭时,手动将finish()称为堆栈中最底层的活动)。

可能是通过setResult()返回的空Intent。你在这里试过null吗?

相关内容

最新更新