您的位置:首页 > 移动开发 > Android开发

Android startActivityForResult与singleTask

2016-03-16 11:56 465 查看
今天在修复bug的时候遇到一个奇怪的问题。我一开始使用的是5.0系统测试机,在一个activity跳转到另外一个activity的时候使用了startActivityForResult,结果接与预期一致。但是在5.0一下的系统这个操作就与5.0结果不一致。

通过debug发现,5.0以下在startActivityForResult之后会执行当前Activity的onActivityResult方法,并且resultCode == RESULT_CANCLE,而5.0则会直接跳转到下一个Activity,百思不得其解,后来我看了一下第二个activity的launchModo = singleTask,我先会不会和这个有关系呢,当我改成默认启动模式之后结果就与5.0一致了。

通过上面的操作可以分析这是5.0一下系统实现机制有关系,后来又看了一下源码,在源码中看到了如下注释:

/**
* For example, if the activity you are launching uses
* the singleTask launch mode,  it will not run in your
* task and thus you will immediately receive a cancel result.
* /
public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options){
...
}


注释中说的很明白了,如果你使用startActivityForResult启动一个singleTask模式的Activity,那么这个Activity不会再当前的栈中运行,并且你会马上接受到一个取消的结果,即RESULT_CANCLE.

上面的问题我将singleTask改成了singleTop,即满足了需求、也不会出现类似上面的问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android singleTask bug