活动结束应用程序上的finish()然后简要显示以前的应用程序

时间:2014-11-06 17:16:18

标签: android android-activity activity-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

我在Nexus 5上看到这个,运行4.4.4。

这只是一个错误吗?或者是否有行为的变通方法?

编辑 -

澄清我想要的行为:

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

2 个答案:

答案 0 :(得分:2)

这与one you linked in your question完全相同(我已经关注了几个月,因为我自己拥有一台Nexus 5)。它实际上是fixed in the AOSP,但是这个特定的修复似乎还没有进入N5。我的手指交叉在Lollipop上进行修复,但我们会看到它什么时候推出。

至于解决方法,我认为目前不存在任何问题,尽管如果我错了,我很想知道 - 我自己在应用程序上做了类似的事情(手动调用{{1}通过后退按钮关闭时堆栈中最底层的活动。)

答案 1 :(得分:0)

您可以通过setResult()返回空的意图。你在这里试过null吗?