1 Activity 的启动模式
启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在|AndroidManifest.xml中通过给
1.1 standard
Activity默认的启动模式,在不进行显式指定的情况下,所有Activity都会自动使用这种启动模式。
1.2 singleTop
在启动Activity时如果发现返回栈的栈顶已经是该Activity,则认为可以直接使用它,不会再创建新的Activity实例。不过当Activity并未处于栈顶位置时,再启动Activity还是会创建新的实例的。
1.3 singleTask
每次启动该Activity时,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈,如果没有发现就会创建一个新的Activity实例。
1.4 singleInstance
有一个单独的返回栈来管理这个Activity,不管是哪个应用程序来访问这个Activity,都共用同一个返回栈,也就解决了共享Activity实例的问题。(如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)
2 创建BaseActivity类
1 | open class BaseActivity : AppCompatActivity() { |
其它类在继承BaseActivity类,可以在BaseActivity实现一些共有的方法。
3 创建Activity管理工具
新建一个单例类ActivityCollector作为Activity的集合
1 | object ActivityCollector { |
4 优雅的启动Activity
使用Kotlin的伴随对象来传递Activity需要传递的参数,在companion object中的方法都可以使用类似于Java静态方法的形式调用
1 | class SecondActivity : BaseActivity() { |