startActivityForResult的一点说明

startActivityForResult()方法和activity的启动模式有关
当被启动的activity启动模式为singleTask或者singleInstance的时候,原acitivity会立即在onActivityResult()方法中会直接收到RESULT_CANCELED结果,也就是说onActivityResult会失效

启动时候的生命方法执行顺序,注意观察原acitivity的执行顺序
D/MainActivity: onPause:
D/MainActivity: onActivityResult:
D/MainActivity: onResume:
D/MainActivity: onPause:

D/SecondActivity: onCreate:
D/SecondActivity: onStart:
D/SecondActivity: onResume:
D/MainActivity: onStop:

现在我们在SecondActivity中设置了result,那么点击返回键
D/SecondActivity: onPause:
D/MainActivity: onRestart:
D/MainActivity: onStart:
D/MainActivity: onResume:
D/SecondActivity: onStop:
D/SecondActivity: onDestroy:
可以看到MainActivity的onActivityResult已经不执行了

另外,如果activity的配置中使用了nohistory=true的话,那么这个activity是肯定收不到结果了。因为返回的时候这个activity已经不存在了。

你可能感兴趣的:(startActivityForResult的一点说明)