最近做一个打电话相关的小app,用到了2个平时了解得少的属性,也是看到一个国外相同项目这个做的,开始是直接复制过来的,没去详细了解,项目中期时,随手删了2行配置的属性,由于平时基本没用到,所以以为用处不大,结果出了写小问题,这里记录一下。不废话了,直接贴代码和解释吧,以下是我测试后的个人理解。
注意:
以上2个activity不在同一个task中,如果先打开CallScreenActivity再打开ContactSettingActivity,这时当ContactSettingActivity执行onDestroy后,会返回到跟它相同taskAffinity的activity中,而不是返回到CallScreenActivity界面,只有在这个taskAffinity的栈中没有任何activity时,才会再次返回到上一个taskAffinity中的相应activity界面。
如果把2个activity都配置为android:launchMode="singleInstance"模式,那么它们都不受task管理,也就是说配置android:finishOnTaskLaunch是无效的。配置android:taskAffinity在这里也失效一部分功能,目前知道它还保留有的功能:就是配置android:excludeFromRecents="true"后,在不同的task中不受影响,且还具备相同的task系统默认返回栈顶activity。
如果启动模式为singleInstance,那么onActivityResult将会失去作用,它的resultCode会直接返回Activity.RESULT_CANCELED。