在我的应用程序中,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弹出窗口,应用程序将关闭,您将直接进入主屏幕。以前打开过的应用程序没有任何尴尬的闪光。
答案 0 :(得分:2)
这与one you linked in your question完全相同(我已经关注了几个月,因为我自己拥有一台Nexus 5)。它实际上是fixed in the AOSP,但是这个特定的修复似乎还没有进入N5。我的手指交叉在Lollipop上进行修复,但我们会看到它什么时候推出。
至于解决方法,我认为目前不存在任何问题,尽管如果我错了,我很想知道 - 我自己在应用程序上做了类似的事情(手动调用{{1}通过后退按钮关闭时堆栈中最底层的活动。)
答案 1 :(得分:0)
您可以通过setResult()
返回空的意图。你在这里试过null
吗?