Android Activity 生命周期研究记录

AndroidActivity生命周期利用解决特定设置恢复问题
本文探讨了如何利用AndroidActivity的生命周期方法解决特定设置在用户退出应用后需要恢复默认状态的需求,同时在应用内切换Activity时保持设置不变。通过分析onCreate、onSaveInstanceState、onRestoreInstanceState和onDestroy等关键方法,实现了解决方案。

        Android Activity的生命周期分析,网上一抓就是一大把,但是总感觉太泛泛而谈,重复东西太多了。最近收到这样的需求:产品经理要求app的部分设置在用户退出app后再次进入app时,这部分设设置回复默认值,但是,如果用户在应用中切换Activity后,应该保留被改动的设置。可以选择的方案很多,几经调研,分析利弊之后,笔者准备从Activity的生命周期下手,于是,这篇文章诞生了。

        根据需求,我理出里需要关注的主要Method:

onCreate(Bundle savedInstanceState)

---- onRestoreInstance(Bundle savdeInstanceState)

---- onSaveInstanceState(Bundle outState)

onDestory()


        原因如下:

  1. onCreate和onDestory是入口和出口,我们可以知道app是否启动或退出
  2. 但是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

内容概要:本文介绍了基于Simulink的开环模块化多电平换流器(MMC)仿真模型,针对N=6子模块的设计进行详细实现,重点展示MMC在高压直流输电系统中的工作原理与波形特性。通过构建上下桥臂电压、电流及电容电压平衡控制的仿真电路,验证了多电平输出能力和系统稳定性。文档还列举了多个相关科研方向的Matlab/Simulink仿真案例,涵盖新能源发电、储能配置、故障诊断、路径规划、电力电子控制等领域,突出其在现代电力系统与智能控制研究中的广泛应用价值。; 适合人群:电气工程、自动化、能源动力及相关专业的研究生、科研人员及从事电力电子与可再生能源系统开发的工程师;具备一定Matlab/Simulink基础和电力系统知识背景者更佳; 使用场景及目标:①掌握模块化多电平换流器(MMC)的基本拓扑结构与开环控制仿真开环模块化多电平换流器仿真(MMC)N=6(Simulink仿真)​方法;②学习如何利用Simulink搭建复杂电力电子系统模型并分析其动态响应特性;③为高电压等级变换器设计、柔性直流输电系统研究或相关课题提供仿真参考和技术支持; 阅读建议:此资源以具体实例为导向,建议读者结合Simulink环境动手实践,重点关注子模块均压逻辑、阶梯波生成机制与系统参数设置,同时可借鉴文中其他研究方向的代码与模型结构,拓展自身科研项目的建模思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值