Android开发学习笔记-5 Activity-4 Activity生命周期
1.Activity中7个生命周期方法:
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState); //初始化设置 布局等内容 ,第一次执行Activity
protected void onStart(); //当Activity能被看见的时候
protected void onRestart(); //被遮挡后重新显示的时候
protected void onResume(); //当Activity能获得用户焦点的时候
protected void onPause(); //Application启动了另外一个Activity的时候
protected void onStop(); //被第二个Activity完全遮挡的时候,第一个Activity完全不可见的时候
protected void onDestroy(); //被销毁、释放的时候 ; 调用finish() ;系统资源不够用的时候
}
例子:一个Activity_A调用另一个Acitivity_B ,然后返回第一个Activity_A,Activity生命周期中的方法调用顺序。
- A_onCreate()
- A_onStart()
- A_onResume()
- A_onPause()
- B_onCreate()
- B_onStart()
- B_onResume()
- A_onStop()
- B_onPause()
- A_onRestart()
- A_onStart()
- A_onResume()
- B_onStop()
- B_onDestroy()
2.Task的基本概念
Task 是一个栈,后进先出。
Task运行过程:
- 应用程序启动之后,运行第一个Activity之后,该Activity对象被压入到Stack当中。
- 点击Button启动第二个Activity,第二个Activity对象被压入到Stack中。
- 点击第二个Activity中的Button,启动第三个Activity,Activity对象被压入Stack中。
- 点击第三个Activity中的Button,启动显示第四个Activity,Activity对象被压入Stack中。
- 当前显示第四个Activity。
- 点击Back按钮则将第四个Activity对象从Stack中弹出,则当前显示第三个Activity。
- 继续按Back按钮,接下来从Stack中弹出第三、二、一个Activity对象,显示同样依次是第三、二、一个Activity。
注:
- 始终显示栈的最外层的Activity。
- 如果某Activity跳出栈,则使用finish()方法,点击Back按钮时不返回该跳出的Activity。
- Activity在栈中只有压入和弹出两个动作,不能重新排序。
3.Activity和Task之间的关系
Task中的所有Activity移动到一起组成了一个单元。像一个Application思路。
4.对话框风格Activity的使用方法
例子:
添加 android:theme="@android:style/Theme.Dialog"
<activity android:name=".SecondActivity"
android:label="@string/title2"
android:theme="@android:style/Theme.Dialog">
</activity>
则该Activity变成对话框样式。
例子:一个Activity_A调用另一个Acitivity_B(对话框样式) ,然后返回第一个Activity_A,Activity生命周期中的方法调用顺序。
- A_onCreate()
- A_onStart()
- A_onResume()
- A_onPause()
- B_onCreate()
- B_onStart()
- B_onResume()
- A_onStop()
- B_onPause()
- A_onRestart()
- A_onStart()
- A_onResume()
- B_onStop()
- B_onDestroy()
5.Android OS 可能释放的Activiy ,当资源不足时。
- onPause()
- onStonp()
- onDestroy()