maoruibin / maoruibin/maoruibin.github.com
Activity生命周期记录
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 22
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
原文:http://hukai.me/android-activitylifecycle-onsaveinstancestate/
记录下Activity生命周期中的onSaveInstanceState(Bundle outState)
onSaveInstanceState与onRestoreInstanceState的作用:
在资源紧张的情况下,系统会选择杀死一些处于非栈顶的Activity来回收资源。 为了能够让这些可能被杀死的Activity能够在恢复显示的时候状态不丢失,所以需要在Activity从栈顶往下压的时候提供onSaveInstanceState的回调用来提前保存状态信息。
而onRestoreInstanceState则是在这个Activity真的回收掉之后的恢复显示阶段用来恢复之前保存的数据。
onSaveInstanceState与onRestoreInstanceState的调用时机:
只要某个Activity是做入栈并且非栈顶时(启动跳转其他Activity或者点击Home按钮),此Activity是需要调用onSaveInstanceState的, 如果Activity是做出栈的动作(点击back或者执行finish),是不会调用onSaveInstanceState的。
只有在Activity真的被系统非正常杀死过,恢复显示Activity的时候,就会调用onRestoreInstanceState。
Sample Code
- 从ActivityA启动ActivityB执行顺序是:A:onCreate -> A:onStart -> A:onResume -> B:onCreate -> B:onStart -> B:onResume -> A:onSaveInstanceState –> A:onStop。
- 正常流程从ActivityB点击Back按钮或者是触发finish方法回退到ActivityA,执行顺序是:B:finish –> B:onPause –> A: onRestart –> A:onStart -> A:onResume -> B: onStop –> B:onDestroy。
- 若启动ActivityB之后,选择点击Home按钮,程序退到后台,那么执行顺序是:B:onPause -> B:onSaveInstanceState -> B:onStop。
- 程序在后台的时候,选择主动杀死程序进程,然后再从桌面点击应用启动,会显示之前的ActivityB,执行顺序是:B:onCreate -> B:onStart –> B:onRestoreInstanceState - > B:onResume。
- 点击Back按钮或者是执行Activity B里面提供的finish方法:B:finish –> B:onPause –> A:onCreate -> A:onStart -> A:onRestoreInstanceState -> A:onResume -> B:onStop -> B:onDestory。
- 最后再点击Back按钮或是执行Activity A里面的finish方法退出程序:A:finish -> A:onPause –> A:onStop -> A:onDestory。
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the issue body and linked source article first. The issue does not name a repository file, test, or concrete change; clarify whether the intended work is to add or revise documentation, then confirm the resulting Activity lifecycle guidance and examples are published in the blog.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100