onActivityResult不能收到setResult(RESULT_OK, intent);的回调

onActivityResult不能收到setResult(RESULT_OK, intent);的回调。解决这个问题时被坑了两个小时。。。只怪当时自己手欠给MainFest.xml中每个Activity设置了android:launchMode="singleTask"。


项目中用到了取相册照片或者是拍照后传回照片,并显示。在我手机上跑的好好的,结果在同事手机上死活不行,当时就想到是不是设置了Activity启动模式的原因,或者是手机内存不够用销毁了Activity。第二种明显被排除,然后就把从A跳转到B页面的A页面启动模式去掉,可是在同事手机上还是不行纠结两个小时,无意中看到大神的帖子上说在使用onActivityResult()这个方法的时候不能使用android:launchMode="singleTask",所以又跑去改XML,索性两个都去掉试试,结果可以了。


原因是我的手机是Android5.0,同时手机是4.2。可能是5.0之后的都可以这样使用,但是5.0以下的不可以。


以下是别人的测试结果,可能是用4的测试。

Android的Activity有四种启动模式,分别是standard、singleTop、singleTask、singleInstance。

测试发现,不同的模式下onActivityResult的调用时机不同:

1 在standard、singleTop两个模式下,onActivityResult方法会在当前的Activity结束掉之后被调用


2 在singleTask、singleInstance两个模式下,onActivityResult方法会立即调用,等到再setResult的时候,就不再起作用了

而不是通常理解的不会回调onActivityResult方法


总之,setResult方法与onActivityResult方法不是同步的。使用的时候需要注意


你可能感兴趣的:(android)