一、生命周期
- onCreate()。这个方法你已经看到过很多次了,我们在每个Activity中都重写了这个方法,它会在Activity第一次被创建的时候调用。你应该在这个方法中完成Activity的初始化操作,比如加载布局、绑定事件等。
- onStart()。这个方法在Activity由不可见变为可见的时候调用。
- onResume()。这个方法在Activity准备好和用户进行交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。
- onPause()。这个方法在系统准备去启动或者恢复另一个Activity的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶Activity的使用。
- onStop()。这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的Activity,那么onPause()方法会得到执行,而onStop()方法并不会执行。
- onDestroy()。这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。
- onRestart()。这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。
二、启动模式
AndroidManifest.xml中的<activity>
标签内指定android:launchMode
属性
- standard:(默认)每次启动都会创建一个该Activity的新实例
- singleTop:栈顶不创建
- singleTask:查看栈内是否存在,存在则移动栈顶,将上面的其他活动依次出栈。
- singleInstance:新开一个栈创建活动。
三、两种跳转方式
3.1 显式声明
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
3.2 隐式声明
在AndroidManifest.xml中声明
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Intent会寻找相匹配的活动
val intent = Intent("com.example.activitytest.ACTION_START")
startActivity(intent)