Activity的生命周期

Activity有三个状态:1.运行状态 2.暂停状态 3.停止状态

运行状态:当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。 


暂停状态: 当它失去焦点但仍然对用户可见时(如右图),它处于暂停状态。即在它之上有另外一个Activity。这个Activity也许是透明的,或者没有完全覆盖全屏,所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但系统处于极低内存时仍然可以杀死这个Activity。 

停止状态:完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。
当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:

void onCreate(Bundle savedInstanceState)  

void onStart() 

void onRestart() 

void onResume() 

void onPause()  

void onStop()

void onDestroy()

Activity三个嵌套生命周期循环
完整的生命周期:onCreate()——>onStart()——>onResume()——>onPause()——>onStop()——>onDestroy()

可视的生命周期:onStart()——>onResume()——>onPause()——>onStop()——>onRestart()——>

前台的生命周期:onResume()——>onPause()

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

当Activity执行后,会调用onCreate()、onStart()、onResume()方法,再点击返回键退出程序,程序会执行onPause()、onStop()、onDestroy()方法,这就是一个完整的生命周期


当Activity执行后,会调用onCreate()、onStart()、onResume()方法,点击按钮进入下一个Activity或者遇到电话短信中断当前Activity,程序会执行onPause()、onStop()方法,当点击返回键回到Activity后,程序会执行onRestart()、onStart()、onResume()方法。这就是一个可视的生命周期


当Activity执行程序定义的对话框时(未设置主题时)程序执行到onResume()方法,并不会执行onPause()方法。当执行我们自己定义主题的对话框时,会执行onPause()方法。点击对话框再返回即一个前台的生命周期


注:

生命周期的运用到哪些方面?

答:在我们编写运用程序的时候,可以将必要的操作写入相应的周期中。①例如应用程序需要网络验证,我们可以将验证操作放入程序的onStart()方法中,当程序开始时,调用onStart()方法中的验证,实现网络的验证。②例如音乐播放器,当音乐播放器在运行时,电话进来,我们需要记录当前音乐播放的位置,这个时候就可以写入到onStop()操作中。当电话打完,再在onRestart()方法中获取onStop()中记录下的数据,实现继续播放的功能。


怎样设置避免手机屏幕横竖屏切换或者键盘的弹出和收入操作影响Activity生命周期的改变?

可以在AndroidMainfest.xml文件中设置相应的属性值。

(1)可以设置android:configChanges="orientation|keyboardHidden|screenSize"三个值都填写才能够实现切换屏幕和输入法不影响Activity的生命周期

(2)可以设置android:screenOrientation="landscape"其中有多种属性值:

landscape:横屏显示(宽比高长)      portrait:竖屏显示(高比宽长)

user:用户当前首选的方向              sensor:有物理的感应器来决定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值