這是爲什麼呢?
這是因爲ActivityStackSupervisor類中的startActivityUncheckedLocked方法在5.0中進行了修改。在5.0之前,當啓動一個Activity時,系統將首先檢查Activity的launchMode,如果爲A頁面設置爲SingleInstance或者B頁面設置爲singleTask或者singleInstance,則會在LaunchFlags中加入FLAG_ACTIVITY_NEW_TASK標誌,而如果含有FLAG_ACTIVITY_NEW_TASK標誌的話,onActivityResult將會立即接收到一個cancle的信息,而5.0之後這個方法做了修改,修改之後即便啓動的頁面設置launchMode爲singleTask或singleInstance,onActivityResult依舊可以正常工作,也就是說無論設置哪種啓動方式,StartActivityForResult和onActivityResult()這一組合都是有效的。所以如果你目前正好基於5.0做相關開發,不要忘了向下兼容,這裏有個坑請注意避讓。
作者:尹star
鏈接:http://www.jianshu.com/p/2a9fcf3c11e4
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。