文章目录
  1. 1. 销毁活动的方法:
  2. 2. Activity的7个回调方法:
  3. 3. 活动被回收了怎么办?
  4. 4. 活动的启动模式:

销毁活动的方法:

销毁一个活动 在活动代码里调用finish()方法或者按下back键

Activity的7个回调方法:

1.onCreate()

完成活动的初始化操作,如加载布局,绑定UI事件

2.onStart()

这个方法在活动由不可见变为可见时候调用

3.onResume()

在活动准备好和用户进行交互时调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。

4.onPause()

在系统准备去启动或者恢复另一个活动时调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响新的栈顶活动的使用。

5.onStop()

在完全不可见时调用,这和onPause()方法的区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会执行,而onStop()方法并不会执行

6.onDestroy()

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

7.onRestart()

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

活动被回收了怎么办?

如果活动被回收了,当用户再返回这个活动时,这个活动会再次以onCreate()方法开始执行,但是如果要保存一些之前的临时数据,就要用onSaveInstanceState()方法了,这个方法会保证一定在活动被回收之前调用。它会协带一个Bundel类型的参数,我们可以保存数据在这个参数中。然后在onCreate()方法中的参数Bundle中拿出来。如果是正常启动活动,则Bundel是null,如果是被回收了之后,则Bundle不为空。

活动的启动模式:

通过标签指定android:launchMode属性可以选择启动模式

1.standard 默认启动模式

在standard模式,当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置。此模式,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

2.singleTop

在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。当要启动的活动不在栈顶时,还是要新建一个新的实例活动运行

3.singleTask

每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

4.singleInstance

不同于以上三种启动模式,指定为singleInstance模式的活动会启用一个新的返回栈来管理这 个活动(其实singleTask模式指定不同的taskAffinity,也会启动一个新的返回栈)通过getTaskId()方法可以返回栈的id

文章目录
  1. 1. 销毁活动的方法:
  2. 2. Activity的7个回调方法:
  3. 3. 活动被回收了怎么办?
  4. 4. 活动的启动模式: