需求:
从ActivityA
中吊起另外一个ActivityB
,在ActivityB中做进一步处理,finish之后要拿到相应结果,在ActivityA中做进一步处理。
方案:
ActivityA中调用startActivityForResult(Intent intent, int requestCode)
方法,定义requestCode
,在onActivityResult(int requestCode, int resultCode, Intent data)
根据requestCode来识别对应的回调做处理。
问题:
但是面对这个很简单的需求出了一个问题就是:在ActivityA中调用startActivityForResult(Intent intent, int requestCode)
之后onActivityResult(int requestCode, int resultCode, Intent data)
方法被立即触发了(是的在ActivityB启动之前),这就和可怕了,我根本就拿不到这个回调啊!
处理:
经排查,如果被启动的Activity的launch mode
为SingleInstacne
或SignleTask
,且不论是从Activity还是从Fragment启动该Activity都会造成这种情况,所以根据实际情况修改launch mode即可。