Android studio案例——测试activity生命周期
目录
一、认识activity
1、认识activity的生命周期
activity生命周期的7个方法和四个状态:
- 当它在屏幕前台时(位于当前任务堆栈的顶部),此时它处于可见并和用户交互的激活状态,叫做
活动状态或者运行状态
; - 当activity被另外一个透明activity或dialog样式的activity覆盖。此时状态叫做
暂停状态(paused)
。它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它依然可见,但它已经失去了焦点数故不可与用户交互; - 如果一个activity被另外的activity完全覆盖掉,叫做
停止状态(stoped)
,它依然保持所有状态和成员信息。但是它不可再见,所以它的窗口被隐藏,当系统内存需要被用在其它地方的时候,stoped的activity将被强行终止掉; - activity被系统杀死回收或者没有被启动时处于
断开状态(killed)
,(如果一个activity是paused)或者stoped状态,系统可以将该activity从内存中删除,Android系统采用两种方式进行删除,要么要求该activity结束,要么直接终止它的进程。当该activity在次显示给用户时,它必须重新开始和重置前面的状态)。
activity的状态转换时会选择性的调用以下方法:
void onCreat(Bundle saveIntanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
重写activity中的几个方法:
public class Activity extends ApplicationContext{
void onCreat(Bundle saveIntanceState);
void onStart();
void onRestart();
void onResume();
void onPause();
void onStop();
void onDestroy();
}
2、一个activity的生命周期流程
四个状态
- 运行状态(running)
- 暂停状态(paused)
- 停止状态(stoped)
- 断开状态(killed)
七个方法:
1、onCreat
2、onStart
3、onRestart
4、onResume
5、onPause
6、onStop
7、onDestroy
流程图
二、测试生命周期
1、帮助文档的下载
在SDK manager里面找到documentation for Android SDK
(描述略,看图操作)
没有发现,通过百度知道Android studio新版本跟以前的版本不一样了
2、在activity跳转过程的生命周期
- 通过启动另一个activity来查看两个activity的生命周期
- Bactivity以对话框的形式存在
<activity android:name=".demoActivity"
android:theme="@style/Base.Theme.Appcompat.Diolog">
</activity>
3、横竖屏切换的生命周期
在横竖屏切换时候,activity的生命周期如下;activity被销毁后重新创建的
需求1
默认情况下(没有陪置android:configChanges属性);
- 竖屏切横屏,销毁当前activity之后,创建一个新的activity实例;
- 横屏切竖屏,销毁当前activity之后,创建一个新的activity实例,新的activity实例很快就被销毁,接着又会一个新的activity实例,如果只希望创建一个实例可配置
android:configChangs="orientation"
为防止这种情况的发现,需要在activity的配置xml文件中加属性
android:configChanges="keyboardHidden|orientation|screenSize"
需求2
默认情况下(没有陪置android:configChanges属性);
- 竖屏切横屏,销毁当前activity之后创建一个新的activity实例
- 横屏切竖屏,销毁当前activity之后,创建一个新的activity实例,新的activity实例很快就会被销毁,接着又会创建一个新activity实例,如果只希望创建一个实例,可以配置
android:configChangs="orientation"
android:screenOrientation="landspace"//横向模式
android:screenOrientation="portrait"//竖向模式