Android生命周期回顾
先回顾生命周期
- Activity一共有3中状态 运行中
[blockquote]
Activity位于前台,并具有用户焦点
[/blockquote]
暂停
[blockquote]
另一个Activity位于屏幕前台并具有用户焦点,但此Activity仍可见。也就是说,另一个Activity显示在此Activity上方,并且该Activity部分透明或未覆盖整个屏幕。暂停的Activity处于完全活动状态(Activity对象保留在内存中,它保留了所有状态和成员信息,并与窗口管理器保持连接),但在内存极度不足的情况下,可能会被系统终止。
[/blockquote]
- 停止
[blockquote]
该 Activity 被另一个 Activity 完全遮盖(该 Activity 目前位于“后台”)。 已停止的 Activity 同样仍处于活动状态(Activity 对象保留在内存中,它保留了所有状态和成员信息,但未与窗口管理器连接)。 不过,它对用户不再可见,在他处需要内存时可能会被系统终止。
[/blockquote]
如果 Activity 处于暂停或停止状态,系统可通过要求其结束(调用其 finish() 方法)或直接终止其进程,将其从内存中删除。(将其结束或终止后)再次打开 Activity 时,必须重建。
Activity的生命周期主要有7个回调函数:
- onCreate
- onResume
- onRestart
- onStart
- onPause
- onStop
- onDestroy
还有onSavaInstanceState
onRestoreInstanceState
等。
状态保存
- onSavaInstanceState 里保存Activity 的瞬态(UI 的状态)
- onPause 里实现持久性数据保存(例如保存到数据库)
处理屏幕旋转、键盘可用性等变化
发生屏幕旋转,键盘可用性变化之后,系统会调用onDestroy()
,然后立即调用onCreate()
。处理这种变化的最佳方法就是利用onSavaInstanceState()
和onRestoreInstanceState()
(或onCreate()
)保存并回复Activity的状态。