引入
一个APP不可能只有一个页面吧,这时候就需要 Navigation 和 Fragment 来帮助我们切换页面。效果图如下。
Fragment 生命周期如下图所示。
Activity 生命周期是指 Activity 从创建
到销毁
的过程,在这一过程中,Activity 一般处于4种状态,即Active/Running、Paused、Stop、Killed。
栈顶
。可见
,但它已经失去了焦点,用户不能与之交互。处于暂停的 Activity 仍然是存活的,它仍然维持着其内部的状态的信息,但是系统可能会在内存不足时杀死该 Activity。遮盖
。同 Paused 状态类似,处于停止状态的 Activity 仍然保留着其内部的状态和成员信息,但是会由于手机系统内存被征用而被系统杀死回收。回收
或未启动。函数 | 描述 | 可被杀死 | 下一个 |
---|---|---|---|
onCreate() | 当 Activity 第一次被创建时调用 | 否 | onStart() |
onRestart() | 当 Activity 停止后,再次启动前调用 | 否 | onStart() |
onStart() | 当 Activity 正要变得为用户所见时被调用 当 Activity 转向前台时继以 onResume() 当 Activity 变为隐藏时继以 onStop() |
否 | onResume() onStop() |
onResume() | 当 Activity 开始与用户进行交互前被调用 此时 Activity 位于堆栈顶部,用户可见。继以 onPause() |
否 | onPause() |
onPause() | 当系统将要启动另一个 Activity 或者弹出对话框时调用 此方法会将所有持久性数据写入存储中,下一个 Activity 必须待其完成才能继续 当 Activity 重新回到前台时继以 onResume() 当 Activity 变为用户不可见时继以 onStop() |
是 | onResume() onStop() |
onStop() | 当 Activity 不再为用户可见时调用 这可能发生在它被销毁或者另一个 Activity (可能是现存或新建的)回到运行状态并覆盖它时 如果 Activity 再次回到前台跟用户交互则继以 onRestart() 如果关闭 Activity 则继以 onDestory() |
是 | onRestart() onDestory() |
onDestroy() | 在 Activity 销毁前调用 这可能发生在 Activity 结束(调用它的 finish() 方法)或者因为系统需要临时空间而销毁该 Activity 实例时 可以用 isFinishing() 来区分这两种情况 |
是 | 无 |
注:表格中“可被杀死”一列是指在该方法被调用后,系统是否可以杀死包含此 Activity 的进程。
为了获取 Activity 被杀死前的状态,可以在 Activity 被销毁前使用 onSaveInstanceState() 方法。
它会将一个键值对
方式记录的 Activity 动态状态的 Bundle 对象传递给该方法。
而当 Activity 再次启动时,这个 Bundle 会传递给 onCreate() 方法或随着 onStart() 方法调用的 onRestoreInstanceState(),所以它们两个都能恢复之前保存的状态。
方法 | 描述 | 是否可终止 |
---|---|---|
onSaveInstanceState() | Android 系统因资源不足而终止 Activity 前被调用,用以保存 Activity 的状态信息 供 onCreate() 和 onRestoreInstanceState()方法恢复使用 |
否 |
onRestoreInstanceState() | 恢复 onSaveInstanceState() 保存的 Activity 状态信息 在 onStart() 和 onResume() 方法之间使用 |
否 |