android_Activity生命周期
Activity的状态
android对于Activity的管理是通过返回栈实现。栈这种数据结构的特点是先进后出,后进先出。栈中保存的就是启动的一个一个Activity,先启动的窗口先进栈,打开的第二个窗口会将第一个窗口向下压,第一个窗口会被遮蔽,但是还是在内存中驻留。由此可以将活动的状态分为运行状态、暂停状态、停止状态、销毁状态。

运行状态,当前的activity处于栈顶的位置。
暂停状态,有的activity并非全屏例如对话框,依然可以看到下面活动的外观,此时下面的activity处于暂停状态。
停止状态,之前处于栈顶的activity,被后进的activity完全覆盖。
销毁状态,当我们点击返回键时,会从停止状态变成为销毁状态,等待下次的进栈和出栈。
根据上面的活动的状态,通过7个方法可以将活动的生命周期完整描述。
Activity的生命周期
onCreate()
onStart()
onResume()
onPause()
onStop()
onDestroy()
onRestart()

当Activity第一次被创建,调用方法onCreate。当Activity处于栈顶的位置时,调用onStart。Activity可以和用户交互调用onResume,此时Activity处于栈顶位置。一个另外的Activity进栈,此时Activity变成暂停状态。Activity被完全覆盖,onStop方法调用。这里需要注意,对话框不是完全覆盖Activity,因为它只是覆盖了全部屏幕的一半。onDestory在按下返回按钮时调用该方法。
onCreate在整个生命活动中只会被调用一次。
使用代码验证Activity的整个生命周期。
活动的整个生命周期以及它所经历的所有事件,在这张图中都能清晰的观察到。要想掌握还是需要亲自操作一下。
1 新建一个工程。
2 这里创建三个activity,一个MainActivity,一个完整的窗口NormalActivity,一个对话框的样式DialogActivity。
NormalActivity 普通常规的活动。设置布局,<TextView>。

DialogActivity 对话框活动。设置布局,<TextView>。

MainActivity 布局文件设置两个按钮,一个用来打开NormalActivity,一个用来打开DialogActivity。设置布局为线性布局(右键-->Convert View) orientation朝向改为垂直。


3 回到MainActivity.java文件中,设置两个Button,创建方法initView该方法的主要功能是初始化窗口。initView方法中将Button和布局文件中的组件进行关联,使用findViewById。
给两个按钮添加监听器,监听其点击事件。将initView方法,放入onCreate方法中,onCreate方法当我们第一次创建Activity时,会被调用。


4 创建其他的方法,onCreate和onDestroy是一对。onStart和onStop对应。onResume和onPause对应。onRestart单个出现。


5 追踪这些状态,使用Log日志。此时,Dialog外观不是一个对话框,将Dialog风格样式变成对话框(不铺满全屏的Activity),在AndroidMainfest中,添加主题theme。
![]()
![]()

6 操作APP,观察7个方法,在切换窗口时,MainActivity中的方法什么时候会被触发。
当MainActivity启动时,onCreate onStart onResume 三个方法被调用。

当打开对话框Activity时,onPause方法被调用。关闭对话框,onResume又被调用。


当打开Normal Activity,onResume onPause onStop 这三个方法被调用。返回 onRestart onStart onResume 这三个方法被调用,此时MainActivity又是栈顶元素了。


退出MainActivity,onDestroy方法被调用。此时MainActivity整个生命周期结束。

这整个过程在图中的流程图中都有显示,希望能够熟悉和理解,理解这个过程对之后的开发很重要。
posted on 2020-12-12 11:49 XiaoXiaoli 阅读(199) 评论(0) 收藏 举报
浙公网安备 33010602011771号