Android生命周期
指安卓从开始到结束的整个过程
Android系统进程优先级,从高到低分别为:
1.前台进程:
- 进程中的activity正在与用户进行交互
- 进程中的组件被前台进程调用或者正在执行生命周期中的回调函数,如onCreate()等
2.可见进程:
- 进程的界面能被用户看见但不与与用户交互
- 进程中的组件被可见进程调用
3.服务进程:
- 进程包含已启动的服务
4.后台进程:
- 进程不包含任何已启动的服务,而且没有任何用户可见的Activity
5.空进程:
- 进程不包含任何活跃的组件
优先级决定与变化规则:
1.进程的优先级取决于进程的所有组件中的优先级最高的部分
2。进程的优先级会根据与其他进程的依赖关系而变化
Android组件
四大组件:
Activity
- Activity:
Android程序的呈现呈,显示可视化的用户界面,并接收与与用户交互所产生的界面事件
Android应用程序可以包含一个或多个Activity,一般需要指定一个程序启动时显示的Activity
- BroadcastReceiver
用来接收并响应广播消息的组件,不包含任何用户界面,可以通过启动Activity或者Notification通知用户接收重要的信息
- Service
Service一般用于没有用户界面,但需要长时间在后台运行的应用
可公开Service程序接口,供其他程序调用
- ContentProvider
Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他程序的私有数据
Android系统内部也提供了一些内置的ContentProvider,就能够为应用程序提供重要的数据信息
组件生命周期:所有Android组件都有自己的生命周期,组件的生命周期是从组件建立到组件销毁的整个过程
在生命周期中,组件会在可见、不可见、活动、非活动等状态中不断变化
Activity生命周期
activity生命周期是指Activity从启动到销毁的过程,整个生命周期Activity表现出四种状态
- 活动状态:activity位于界面最上层,完全能被用户看到,能够与用户进行交互
- 暂停状态:activity在界面上被部分遮挡,不位于界面最上层,且无法与用户进行交互
- 停止状态:activity被其他activity全部遮挡,在界面上完全不能被用户看到
- 非活动状态:activity被用户关闭或被系统终止后则处于非活动状态
Activity四种状态的变换关系图:
通过栈对activity进行管理
Activity栈
遵循“后进先出”的规则
随着Activity自身状态的变化,Android系统会调用不同的事件回调函数
Activity的主要事件回调函数:
public class HelloActivity extends Activity{
// 当Activity被第首次加载时执行,新启动一个程序的时候其主窗体的onCreate事件就会被执行
protected void onCreate(Bundle savedInstanceState); //初始化数据、view、恢复等
// activity变为在屏幕上对用户可见时调用
protected void onStart();
// 界面可视化后用户与界面进行交互,此时activity进入了活动状态
protected void onResume();
// activity从活动状态变成暂停状态
protected void onPause();
// activity进入停止状态
protected void onStop();
// activity从停止状态回到活动状态
protected void onRestart();
// activity结束生命周期,进入非活动状态
protected void onDestroy();
}
- onSaveInstanceState()和onRestoreInstanceState() 注:不是生命周期的事件回调函数
onSaveInstanceState()在停止activity前被调用,会将界面临时信息保存在Bundle中,可以用onCreate和onRestoreInstanceState()恢复保存的信息,一般使用onCreate()恢复,有些特殊情况下只能使用onRestoreInstanceState()函数恢复,例如:必须在界面完全初始化完毕后才能进行的操作
- onPause()和onSaveInstanceState(),这两个函数都可以用来保存界面信息
onPause()一般用于数据保存在文件或者数据库中,保存持久化数据
onSaveInstanceState()主要用来保存一些临时信息,一般保存在Bundel中
Activity的生命周期可分为全生命周期、可视生命周期和活动生命周期
Activity事件回调函数的调用顺序:
在MainActivity中覆写8个生命周期函数,实现以上的过程。