Android中关于onSaveInstanceState文档

    大家在码代码的时候,每个activity肯定是会调用onCreate方法的,但是onCreate方法中的savedInstanceState这个参数却很少用到,经常就这么被忽略了,从其命名来看,应该是用来保存activity状态的,而这些状态数据是从何而来呢?就是自己这回要学习的onSaveInstanceState方法,没有什么资料比官方文档更准确详细的了,以下是来自http://developer.android.com/reference/android/app/Activity.html中有关onSavedInstanceState方法的翻译,记录学习一下该方法的使用。

   

protected void onSaveInstanceState (Bundle outState)

Added in API level 1

 

Called to retrieve per-instance state from an activity before being killed so that the state can be restored in onCreate(Bundle) or onRestoreInstanceState(Bundle) (the Bundle populated by this method will be passed to both).

 

在一个activity被杀掉之前调用来保存每一个实例的状态,这样一来该状态便可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle) 中恢复。

------------------------------------------------------------------------------

This method is called before an activity may be killed so that when it comes back some time in the future it can restore its state. For example, if activity B is launched in front of activity A, and at some point activity A is killed to reclaim resources, activity A will have a chance to save the current state of its user interface via this method so that when the user returns to activity A, the state of the user interface can be restored via onCreate(Bundle) or onRestoreInstanceState(Bundle).

 

该方法在一个activity即将被杀掉之前调用,以便于在将来某一时刻返回时可以恢复到其原来的状态。比如,如果activityB启动后位于activityA的前面,并且在某一时刻activityA由于系统回收资源要被杀掉,A就可以通过该方法将有机会保存其用户界面的状态,这样,以后当用户返回到A的时候,可以通过调用onCreate(Bundle)或者onRestoreInstanceState(Bundle)方法来恢复界面的状态。

------------------------------------------------------------------------------

Do not confuse this method with activity lifecycle callbacks such as onPause(), which is always called when an activity is being placed in the background or on its way to destruction, or onStop() which is called before destruction. One example of when onPause() and onStop() is called and not this method is when a user navigates back from activity B to activity A: there is no need to call onSaveInstanceState(Bundle) on B because that particular instance will never be restored, so the system avoids calling it. An example when onPause() is called and not onSaveInstanceState(Bundle) is when activity B is launched in front of activity A: the system may avoid calling onSaveInstanceState(Bundle) on activity A if it isn't killed during the lifetime of B since the state of the user interface of A will stay intact.

 

不要将这个方法和activity生命周期回调方法例如onPause()和onStop()搞混了,onPause()在activity被放置后台或者自行销毁时被调用,onStop()是activity被销毁时调用。有这样一个说明什么时候onPause和onStop被调用而不是onSaveInstanceState被调用的例子就是当用户从activityB返回到activityA的时候:没有必要调用B的onSaveInstanceState(Bundle)因为此时的B的实例永远不会被恢复,所以系统会避免调用它。另一个调用onPause()而不是调用onSaveInstanceState()的例子是当activityB启动并处于activityA的前端:如果在B的生命周期里A的界面用户状态未被破话,系统就不会调用activityA 的onSaveInstanceState(Bundle)方法。

------------------------------------------------------------------------------

 If you override this method to save additional information not captured by each individual view, you will likely want to call through to the default implementation, otherwise be prepared to save all of the state of each view yourself.

 

默认的实现是通过调用UI层面上每个拥有ID的view的onSaveInstanceState()的方式来保存大部分UI实例的状态,并且保存当前获得焦点的view的id(所有的保存状态都会在默认的onRestoreInstanceState(Bundle)实现中恢复)。如果你重写这个方法来保存额外的没有被每个单独的view保存的信息,你可能想要通过在默认的实现中调用,或者自己来保存每个view的所有的状态。

------------------------------------------------------------------------------

If called, this method will occur before onStop(). There are no guarantees about whether it will occur before or after onPause().

 

如果被调用,该方法会在onStop()之前发生。但并不保证是否在onPause()之前或之后发生。

内容概要:本文围绕直流微电网中带有恒功率负载(CPL)的DC/DC升压转换器的稳定控制问题展开研究,提出了一种复合预设性能控制策略。首先,通过精确反馈线性化技术将非线性不确定的DC转换器系统转化为Brunovsky标准型,然后利用非线性扰动观测器评估负载功率的动态变化和输出电压的调节精度。基于反步设计方法,设计了具有预设性能的复合非线性控制器,确保输出电压跟踪误差始终在预定义误差范围内。文章还对比了多种DC/DC转换器控制技术如脉冲调整技术、反馈线性化、滑模控制(SMC)、主动阻尼法和基于无源性的控制,并分析了它们的优缺点。最后,通过数值仿真验证了所提控制器的有效性和优越性。 适合人群:从事电力电子、自动控制领域研究的学者和工程师,以及对先进控制算法感兴趣的研究生及以上学历人员。 使用场景及目标:①适用于需要精确控制输出电压并处理恒功率负载的应用场景;②旨在实现快速稳定的电压跟踪,同时保证系统的鲁棒性和抗干扰能力;③为DC微电网中的功率转换系统提供兼顾瞬态性能和稳态精度的解决方案。 其他说明:文中不仅提供了详细的理论推导和算法实现,还通过Python代码演示了控制策略的具体实现过程,便于读者理解和实践。此外,文章还讨论了不同控制方法的特点和适用范围,为实际工程项目提供了有价值的参考。
内容概要:该论文介绍了一种名为偏振敏感强度衍射断层扫描(PS-IDT)的新型无参考三维偏振敏感计算成像技术。PS-IDT通过多角度圆偏振光照射样品,利用矢量多层光束传播模型(MSBP)和梯度下降算法迭代重建样品的三维各向异性分布。该技术无需干涉参考光或机械扫描,能够处理多重散射样品,并通过强度测量实现3D成像。文中展示了对马铃薯淀粉颗粒和缓步类动物等样品的成功成像实验,并提供了Python代码实现,包括系统初始化、前向传播、多层传播、重建算法以及数字体模验证等模块。 适用人群:具备一定光学成像和编程基础的研究人员,尤其是从事生物医学成像、材料科学成像领域的科研工作者。 使用场景及目标:①研究复杂散射样品(如生物组织、复合材料)的三维各向异性结构;②开发新型偏振敏感成像系统,提高成像分辨率和对比度;③验证和优化计算成像算法,应用于实际样品的高精度成像。 其他说明:PS-IDT技术相比传统偏振成像方法具有明显优势,如无需干涉装置、无需机械扫描、可处理多重散射等。然而,该技术也面临计算复杂度高、需要多角度数据采集等挑战。文中还提出了改进方向,如采用更高数值孔径(NA)物镜、引入深度学习超分辨率技术等,以进一步提升成像质量和效率。此外,文中提供的Python代码框架为研究人员提供了实用的工具,便于理解和应用该技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值