onActivityResult中resultCode老是等于0

今天在项目发现,我在onActivityResult等返回resultCode总是0,想不通,更奇怪的在乐视1s手机上,却可以正常返回resultCode,在三星GT-N7100上不行,老是resultCode=0,同样的代码,在两个不同手机出现不一样的结果,反正不是我想看到的,最后网上找了些资料看了下,是和acitivty的launchMode有关,我两个activity   A和B,都是launchMode= singleTask;A跳转到B,我把B的模式取掉,也就是standard模式(默认 ),运行后,结果resultCode返回预期的数据了,最后测试下,发现:

1 B在standard、singleTop两个模式下,在A中startActivityForResult()后,onActivityResult方法会在Activity B结束掉之后被调用

2 B在singleTask、singleInstance两个模式下,在A中tartActivityForResult()后,onActivityResult方法会立即调用,等到在Activity 中setResult的时候,就不再起作用了,导致老是resultCode=0,也就是 setResult失效

在使用startActivityForResult的时候,注意setResult 的activity启动模式只要为standard、singleTop就行。

你可能感兴趣的:(Android基础知识)