差点被搞死 onActivityResult 立即执行,是为啥? singleInstance or FLAG_ACTIVITY_NEW_TASK (真理呀)

仔细对比了一下自己的代码和BluetoothChat的代码,并没有发现什么可疑之处,直到比较了一下AndroidManifest.xml文件,才发现我的工程多了一处属性:android:launchMode=”singleInstance”,去掉之后一切正常了,后来在google上发现也有同胞发现了类似的问题,他是多加了一句代码:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);也会导致一样的结果,回过头来翻了翻开发指南,才恍然大悟,里面有句话是这么说的:一个“singleInstance”模式的activity将会是它所在的任务中唯一的activity。如果它启动了别的activity,那个activity将会依据它自己的加载模式加载到其它的任务中去──如同在intent中设置了FLAG_ACTIVITY_NEW_TASK 标记一样的效果。是的,也就是说这两种情况下,新开启的Activity一定在新的任务(进程)中,和原来的Activity不在同一进程中,我想这应该就是onActivityResult函数表现异常的原因吧,看来自己还是基本功不够扎实啊。

 

http://xiwangliujiao.blog.163.com/blog/static/36195760201355111124919/