关于Activity保存状态的研究-创新互联
一.Activity进行横竖屏切换时候的生命周期
成都创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元韶关做网站,已为上家服务,为韶关各地企业和个人服务,联系电话:135182197921.运行的时候
2.切横屏(生命周期执行一次)
3.再切竖屏(生命周期执行两次)
重写返回按钮事件public void onBackPressed()此方法当返回按钮事件出发时,体系会默许调用finish(),你直接return别让体系调用就行,back键后台参考源码home的事件并重写
@Override
public void onBackPressed() {
// 这里处理逻辑代码,该方法仅适用于2.0或更新版的sdk
return;
}
android的手机的back键默认行为是finish(实质就是从Task中将其出栈)处于前台的Activity的即Activity的状态为Destroy状态,再次启动该Activity是从onCreate开始的。 而Home键默认是stop前台的Activity即状态为onStop而不是Destroy,若再次启动它,则是从OnResume开始的,即会保持上次Activityd的状态。 back键也有例外的,按back键不会关闭Activity的,比如播放音乐,按了back键之后仍可以继续播放音
按下Back返回键
按下Home键
按下Home键后再次运行改程序
如果将activity的android:configChanges=”orientation|keyboardHidden”属性设置后
1, 同上1
2,
3,
总结:
1.Activity在进行横屏切换时会生命周期会执行一次,这个生命周期不是正常所说的连贯的生命周期,会先调用onSaveInstanceState()方法,在这里可以进行Activity的状态保存,然后是onPause()->onStop()->onDestroy()->onCreate()->onStart()->onResume()->onRestoreInstanceState()->onRsume();
进行竖屏切换时会调用2次,
2.如果在Manifest.xml中设置了Activity的属性android:configChanges=”orientation|keyboardHidden”,则进行横屏切换的时候只会调用一次onConfigurationChanged()方法,竖屏会调用两次
按下Home键,onSaveInstanceState()-> onPause()->onStop();此时运行别的程序,如果没被收回内存,再运行该程序
onRestart()->onStart()->onResume()
Activity未被完全覆盖只是失去焦点:onPause--->onResume
二.Activity的状态保存
方法一:通过onSaveInstanceState() 和onRestoreInstanceState()或onCreate()
Back键不会调用onSaveInstanceState,只有在Home键,横竖屏切换和系统收回Activity的时候才会调用,
onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据。至于onRestoreInstanceState方法,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执
一.关键字:通过参数Bundle 来进行存储
在onCreate(Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceStae)都可以进行数据的恢复,
从图中,我们可以看出,onCreate()方法运行在onRestoreInstanceState()方法之前。
- @Override
- contenteditText
方法二:通过 Activity的相应方法,这里选用onPause() 和onResume()
在这里是通过SharedPreference存储
- @Override
- contenteditText
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:关于Activity保存状态的研究-创新互联
地址分享:http://ybzwz.com/article/cdeiei.html