Android成长之路-Android生命周期例子小解

 

声明周期图:

 

 

Activity 从创建到进入运行态所触发的事件 

 onCreate()-->onStart-->onResume()

           从运行态到停止态所触发的事件                 

          onPause()--->onStop()

                从停止态到运行态所触发事件

               onRestart()-->onStart()--->onResume()

           从运行态到暂停态所触发事件                   

          onPause()

           从暂停态到运行态所触发事件                    

          onResume()

 

 

根据例子来详细的介绍一下它的生命周期的过程(它所调用的方法):

 

首先先看一下例子:

 

Java文件有:ActivityLifeCyde.java   、  SecondLifeCyle.java、ThridLifeCyle.java  

 

Xml布局文件有:main.xml、second.xml、thirid.xml

 

首先是ActivityLifeCyde.java文件

 

 

 

 

SecondLifeCyle.java文件中

 

 

 

ThridLifeCyle.java  文件中

 

 

 

Main.xml文件中

 

 

 

 

Second.xml

 

 

 

Thirid.xml文件中

 

 

 

要在AndroidManifest.xml文件中添加两句话

 

 

 

效果显示:

 

 

 

当点击button按钮时

 

 

 

点击button按钮时返回上个界面

 

 

 

点击对话框按钮时出现

 

 

 

当点击退出按钮时

 

 

 

 

点击取消则返回当前页面,点击确定则退出当前Activity

 

 

 

 

下面则根据这个例子来解释一下生命周期的调用过程

 

1、刚把程序运行起来的时候

 onCreate() -- onStart() -- onResume()

 

2、当点击Button按钮的时候

  onPause() -- onStop()  

   也就是说 进入另外一个Activity的时候会暂停当前的Activity 并且停止

   进入到另外一个Activity的时候也会执行1 中的过程 ,当再返回第一个Activity的时候也会执行2 中一样的过程

 

3、点击对话框按钮的时候

   onPause()  

这个时候只会把这个Activity 暂停 ,因为出现的对话框同样也在这个Activity中,也就是说这个Activity并没有停止,所以他不会调用onStop()这个方法,更不会调用onDestory() 消灭这个Activity ,也可以理解为 当前Activity失去了焦点, 就好比 一个页面中有两个文本框:文本1和文本2   , 光标由文本1 转到文本2中 实际上就是这个过程

 

4、点击对话框按钮,然后再点击返回键的时候

   onPause()  --  onResume()  

  当前暂停的Activity在暂停后再次使用的时候会调用onResume()这个方法 重新开始这个Activity 

 

5、点击退出按钮,如果点击取消的时候

  在这个过程中当前程序的生命周期是没有任何变化的

 

6、点击退出按钮,如果点击退出按钮的时候

  onPause() -- onStop() ---  onDestroy()    

退出的话就会把当前的activity结束并销毁掉  

 

7、运行程序,再返回

onCreate() -- onStart() -- onResume() --  onPause() -- onStop() ---  onDestroy() 

整个生命周期的调用

 

8、运行程序 ,再点击手机键盘中的 小房子  的那个按钮

  onCreate() -- onStart() -- onResume() --  onPause() -- onStop() 

  这个时候Activity 是没有被消灭的,只是把它暂停了,主页把这个activity覆盖了,相当于进站

 

9、在8的基础上再点击进入程序

   onRestart() ---  onStart() ---  onResume()

   把这个activity从暂停的状态重新开始,调用onRestart()这个方法 ,然后再开始运行

 

10、长时间点击 小房子 那个按钮

这个动作是没有执行任何方法,只是回到了主页面

 

11、在10 的基础上,再长时间点击 小房子  那个按钮 回到activity

    onRestart() ---  onStart() ---  onResume()

 

 

然后在ActivityLifeCyde.java 文件中添加这两个方法

 

 

 

12、如果在这个时候再点击  小房子 的那个键

   或

     按下电源按键(关闭屏幕显示)时

  或

     长按HOME键,选择运行其他的程序时

onSaveInstanceState() ---  onPause() --  onStop() 

其实点击这个键 可以理解为强制性的离开当前的activity 并没有得到我的同意 ,在这个时候会执行 onSaveInstanceState () 这个方法 保存当前activity的进度 ,就好比你在手机上看小说,突然来了一个电话,手机会保存小说的进度,当你接完电话的时候小说会读取你接电话之前的进度

 

13、在12的基础上 再进入这个程序中

onRestart() ---  onStart() ---  onResume()

复苏,重新开始

 

onSaveInstanceState方法和onRestoreInstanceState方法不一定是成对的被调用的,onRestoreInstanceState被调用的前提是,activity 确实被系统销毁了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值