关于Activity保存状态的研究-创新互联

一.Activity进行横竖屏切换时候的生命周期

成都创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元韶关做网站,已为上家服务,为韶关各地企业和个人服务,联系电话:13518219792

1.运行的时候

关于Activity保存状态的研究

2.切横屏(生命周期执行一次)

关于Activity保存状态的研究

3.再切竖屏(生命周期执行两次)

关于Activity保存状态的研究

重写返回按钮事件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返回键

关于Activity保存状态的研究

按下Home

关于Activity保存状态的研究

按下Home键后再次运行改程序

关于Activity保存状态的研究

如果将activityandroidconfigChanges=”orientation|keyboardHidden”属性设置后

1, 同上1

2,

关于Activity保存状态的研究

3,

关于Activity保存状态的研究

总结:

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 AonRestoreInstanceState方法不会被执

一.关键字:通过参数Bundle 来进行存储

在onCreate(Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceStae)都可以进行数据的恢复,

关于Activity保存状态的研究

从图中,我们可以看出,onCreate()方法运行在onRestoreInstanceState()方法之前。


  1. @Override 
  2. contenteditText

方法二:通过 Activity的相应方法,这里选用onPause() onResume()

在这里是通过SharedPreference存储


  1. @Override 
  2. contenteditText

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:关于Activity保存状态的研究-创新互联
地址分享:http://ybzwz.com/article/cdeiei.html