美文网首页
activity几种状态

activity几种状态

作者: 碗哥为国争光 | 来源:发表于2018-08-01 01:21 被阅读0次

前台状态:

通俗的说就是可以看到,且可以操作(有焦点)的状态

可视状态:

即可以看得见(没有被完全遮挡),但是没有焦点,不可以触摸操作;比如躲在对话框后面的activity

后台状态:

backgroudstate

已经看不到了,系统可以将这个进程杀死来回收内存。如果在这种状态下activity被系统杀死了,那么在用户重新打开这个activity的时候,它的onCreate方法会使用之前onSaveInstanceState(Bundle)保存的状态数据,来让自己恢复到之前的状态

空进程状态:

一个没有持有任何activity和任何应用组件的进程,比如Services或者广播接受者,当内存不足的时候,它们将会被先杀死并回收。

也就是说onSaveInstanceState(Bundle)会在activity转入后台状态之前被调用,也就是onStop()方法之前,onPause方法之后被调用;我们都知道在默认情况下,在旋屏之后,activity会重新经历一次生命周期,下面的log就是在点击旋屏之后的执行顺序:

activity状态保存:安卓3.0开始,应用只有在onstop()方法返回之后被杀死也就是说在执行完onStop()方法之前,应用都不可能被杀死你应该在onPause()方法中去存储那些持久性的数据,比如用户的输入等。onSaveInstanceState(Bundle)将在activity转入“background state后台状态”之前被调用,能让我们存储一些activity的动态的状态值到Bundle对象中,以便在之后调用onCreate(Bundle)方法时用到。

修改AndroidManifest.xml,把该Activity添加android:configChanges="orientation",执行横竖屏切换

onSaveInstanceState-->

onPause-->

onStop-->

onDestroy-->

onCreate-->

onStart-->

onRestoreInstanceState-->

onResume-->

6、再执行横竖屏切换,发现不会再打印相同信息,但多打印了一行onConfigChanged onSaveInstanceState-->

onPause-->

onStop-->

onDestroy-->

onCreate-->

onStart-->

onRestoreInstanceState-->

onResume-->

onConfigurationChanged-->

7、把android:configChanges="orientation" 改成android:configChanges="orientation|keyboardHidden",执行横竖屏切换就只打印onConfigChanged onConfigurationChanged-->

8、执行步骤4

onConfigurationChanged-->

onConfigurationChanged-->

总结:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

activity状态保存在onPasue()中

activity几种状态

相关文章

网友评论

      本文标题:activity几种状态

      本文链接:https://www.haomeiwen.com/subject/rmakvftx.html