Android Activity 生命周期研究记录
来源:互联网 发布:软件行业会计处理 编辑:程序博客网 时间:2024/05/16 09:19
Android Activity的生命周期分析,网上一抓就是一大把,但是总感觉太泛泛而谈,重复东西太多了。最近收到这样的需求:产品经理要求app的部分设置在用户退出app后再次进入app时,这部分设设置回复默认值,但是,如果用户在应用中切换Activity后,应该保留被改动的设置。可以选择的方案很多,几经调研,分析利弊之后,笔者准备从Activity的生命周期下手,于是,这篇文章诞生了。
根据需求,我理出里需要关注的主要Method:
onCreate(Bundle savedInstanceState)
---- onRestoreInstance(Bundle savdeInstanceState)
---- onSaveInstanceState(Bundle outState)
onDestory()
原因如下:
- onCreate和onDestory是入口和出口,我们可以知道app是否启动或退出
- 但是onCreate有两种情况调用,一种是第一次(这里指完全退出app后)启动这个Activity时,另一种是当这个Activity处于后台并且手机内存不足时,它可能被回收,此时从其他Activity返回时会调用onCreate,只要通过调研,弄清楚onCreate时到底是不是第一次启动这个Activity即可。所以笔者向导里这两个Method:onRestoreInstance() & onSaveInstanceState()
于是写demo,打印日志观察:
case 1 启动app,从mainActivity跳转到Activity2,然后点击返回按钮返回,mainActivity的日志日下:
onCreate() savedInstanceState 此时为null
---- startActivity()
onSaveInstanceState()
onDestory()
---- 从Activity2返回MainActivity
onResume()
case 2 在开发人员选项里打开设置“不保留活动”,步骤同case 1
onCreate() savedInstanceState 此时为null
---- startActivity()
onSaveInstanceState()
onDestory()
---- 从Activity2返回MainActivity
onCreate(Bundle savedInstanceState) savedInstanceState 此时不为null
---- onRestoreInstance(Bundle savdeInstanceState)
onResume()
对比case1和 case2的log,观察到明显的不同
---- onCreate(Bundle savedInstanceState) savedInstanceState 此时不为null
---- onRestoreInstance(Bundle savdeInstanceState)
onResume()
观察日志可以得出结论:如果Activity被回收,再次返回它时,onCreate中会有 savedInstatceState对象,并且onRestoreInstance会被调用。得出结论后,笔者思路也清晰了,要做的就是在onSaveInstanceState中保存一个标记,再onCreat中进行标记判断即可。
笔者不喜欢篇幅过长的技术博客,这样会使阅读者容易疲乏,接下来笔者会整理demo,上传后在博客中更新。
参考资料:
http://developer.android.com/reference/android/app/Activity.html
http://blog.csdn.net/liuhe688/article/details/673340
http://blog.csdn.net/android_tutor/article/details/5772285
- Android Activity 生命周期研究记录
- Android 学习记录-Activity生命周期
- android中activity的生命周期研究学习
- Android 学习记录3 -Activity 的生命周期
- activity 跳转生命周期研究
- Activity的生命周期记录
- 【Android】【Activity生命周期】Activity生命周期
- android activity与fragment的生命周期详细研究
- Android学习笔记补充记录——Activity的生命周期
- 记录自己的Android学习(三)Activity生命周期
- Android开发记录一之Activity初步及生命周期
- android中一个activity的生命周期试验记录
- 基础知识记录:Activity的生命周期
- 基础知识记录:Activity生命周期与Fragment生命周期
- Android生命周期研究
- Android activity的生命周期
- Android Activity 生命周期
- Android:Activity的生命周期
- spring常用注解
- C++操作注册表大全
- Java Web 高性能开发, 前端的高性能
- iframe自适应高度
- ffmpeg 2.1.3 run library link error
- Android Activity 生命周期研究记录
- Wello:可以检测心率、血压的手机壳
- Problem 61 修改进程的显示名称
- C++程序占内存分析
- XCode的快捷键
- 网站开发中html常用的特殊字符
- VC++2005 MFC EditControl
- Spring常用注解,自动扫描装配Bean
- C#高性能大容量SOCKET并发(十):SocketAsyncEventArgs线程模型