2014-11-06 37 views
1

在我的应用程序中,Activity1启动Activity2与“startActivityForResult()”。完成()在一个活动关闭应用程序,然后简要显示以前的应用程序

当活性2完成后,下面的代码被称为:

Activity2.java

private void finishActivity(final boolean accepted) 
{ 
    Intent returnIntent = new Intent(); 

    setResult(accepted ? RESULT_OK : RESULT_CANCELED, returnIntent); 

    finish(); 
} 

活性1收到这个回调,如果结果不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(); 
    } 
} 

活动1完成的应用程序关闭,如预期后。

的问题 -

然而,我的应用程序关闭后,而不是去到主屏幕,在栈简要以前的应用程序启动前,则也关闭!然后我进入主屏幕。

在Android bug跟踪系统,我看到的是按后退按钮时的情况列出了类似的错误,我相信这是与调用完成():

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

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

这只是一个错误?还是有任何行为的解决方法?

编辑 -

为了澄清我想要的行为:

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

+0

可能是一个系统错误... – StoneBird 2014-11-06 17:26:24

+0

“堆栈上的前一个应用程序暂时启动,然后关闭!”什么是'以前的申请'?你的意思是Activity2? – 2014-11-06 17:32:32

+0

@MarcinS。不,我的意思是以前的应用程序 - 例如,在我的顶级活动中调用finish()后,Play Store会短暂弹出并弹出,最后将我带到主屏幕。 – Alchete 2014-11-06 17:38:19

回答

0

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

+0

我刚试过--Null也一样,但谢谢你的想法。这似乎是一个错误... – Alchete 2014-11-06 23:03:21

2

这和one you linked in your question(我一直关注它好几个月,因为我自己拥有一个Nexus 5)完全相同。它实际上是fixed in the AOSP,但是这个特殊的修复似乎还没有找到进入N5的途径。我的手指越过了棒棒糖,但我们会看到什么时候推出。

至于解决方法,目前我认为不存在,但如果我错了,我很想知道 - 我自己开发一个类似的应用程序(手动调用底部的finish()通过后退按钮关闭堆栈中的最活动)。

+0

是的,我看到了同样的确切行为 - 但谷歌地图似乎避免了这个陷阱。您可以通过清除Google地图上的数据进行测试,然后启动 - 然后拒绝服务条款。地图关闭干净,只是进入主屏幕。 – Alchete 2014-11-06 18:49:07

+0

就这样。我想知道他们是否可以模拟home按钮而不是调用'finish()'。我看到了TOS下的常规地图活动,所以有可能他们这样做是为了规避必须完成堆栈中的所有活动。 – Alex 2014-11-06 20:40:14

相关问题