概述
Android中有一个重要的思想就是复用, 例如已经启动了浏览器应用, 这个时候微信要打开一个网页, 那么并不会再新建一个浏览器应用打开网页, 而是调用已经打开的浏览器去打开这个网页。
如果要实现上面复用的这个目的, 有两种方法。
1: 使用SingleInstance, 系统中有且唯一的一个Activity。
2: SingleTask 的使用(复用的东西一般是别人的组件, 在不同的App), 系统会复用已经启动的Activity。
疑问的情况:
1: FLAG_ACTIVITY_NEW_TASK 单独使用, 假设调用的Activity没有SingleTask标志, 那么久代表这个Activity在Task中可以存在多个。
这种情况看见, 并没有复用已经存在的ActivityA, 而是新建了一个ActivityA.
2: 不使用launchMode和flag
ActivityA 在App1中定义。
3: FLAG_ACTIVITY_NEW_TASK 同 SingleTask 组合使用, 其实和 SingleTask 单独使用无任何区别。
总结
SingleTask -- 望文生义一个Task中只有唯一的一个Activity(系统中有且仅有这一个Activity)
SingleInstance -- 这个名称没有上面一个形象, 它表示一个Task中有且仅有这一个Activity(同上一样),并且这个Task中仅有这一个Activity.
FLAG_ACTIVITY_NEW_TASK -- 这是一个标志,表示要新建一个Task, 如果在同一个应用中 ActivityA 启动 ActivityB, 那么这个标志可以忽略。(它的使用场景在应用A启动应用B的时候添加, 例如桌面启动的应用都会添加这个flag)