`
emowuyi
  • 浏览: 1479814 次
文章分类
社区版块
存档分类
最新评论

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确实被系统销毁了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics