一、activity前端
它是 android 应用程序的基本功能单元。一个Activity是一个应用程序组件,提供一个屏幕,用户能够用来交互为了完成某项任务,例如拨号、拍照。Activity 自己是没有界面的。activity类建立了一个窗口,开发人员能够经过setContentView(View)接口把UI放到activity建立的窗口上。每个activity给予一个窗口,在上面能够绘制用户接口。窗口一般充满屏幕,但也能够小于屏幕而浮于其它窗口之上。android
一个应用程序(APK文件)一般由多个activities组成,他们一般是松耦合关系。一般,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每个activity而后能够启动另外一个activity为了完成不一样的动做。每一次一个activity启动,前一个activity就暂停或中止了,可是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。符合简单“后进先出”原则,因此,当用户完成当前activity而后点击back按钮,它被弹出栈(而且被摧毁),而后以前的activity恢复。这些状态转换都是activity的生命周期的部分。网络
要理解activity的生命周期,首先须要明白activity的四种状态函数
1、Active/Runing (活动的/运行状态) 最直接的表现是:它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。布局
2、Paused(暂停) 最直接的表现是:它仍然可见,但它已经失去了焦点故不可与用户交互。例如被一个透明样式的 Activity 覆盖的状态或者弹出dialog(对话框)时;此时它依然与窗口管理器保持链接,系统继续维护其内部状态,可是不能与用户交互,不能操做;日志
3、Stop(中止) 最直接的表现是: 处于彻底不可见的Activity,被另外一个Activity彻底覆盖,好比从一个activity1跳转到另一个Activity2,Activity2(可见)处于屏幕的顶端并彻底覆盖了activity1xml
4、Killed(销毁或结束) : 被系统杀死回收或者没有被启动时处于 Killed 状态。接口
知道了activity的四种状态,下面来理解activity的生命周期生命周期
一个应用程序与用户交互(如打开Android新闻客户端,浏览新闻)资源
首先展示的是一条一条的新闻列表 其经历:activity的生命周期
onCreate:在这里建立界面,作一些数据的初始化工做。例如建立指定Activity的布局文件、数据的绑定等;
onStart: 当Activity处于可见时(即显示在屏幕上)将调用这个函数;
onRestart:当Activity从中止状态进入活动状态前,将调用这个函数;
onResume:当Activity得到焦点,也就是说Activity可以与用户交互的时候将调用这个函数,这个时刻Activity位于Activity栈的顶端
onPause:当Activity进入暂停状态将调用这个函数,但在这个时刻咱们通常用来保存持久的数据或者释放占用的资源。
onStop:当Activity彻底被遮时将调用这个函数,
onDestory:当Activity在被终止前,即将进入非活动状态前,将调用该函数,通常如下两种状况下会调用onDestory函数一、调用Activity的finish方法二、当Android系统资源不足的时候
下面来自网络
从下面的日志日志能够看出区别:
1.从FirstActivity跳到SecondActivity时
FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
FirstAcvity --->onStop
如今给AndroidMainfest.xml中的SeconedActivity属性加入android:theme="@android:style/Theme.Dialog",则SeconedActivity将以对话框形式出现,不会对FirstAcvity造成遮盖.
这时的状态输出为:
FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
这时FirstAcvity比彻底遮盖时少调用了onStop方法.
如下两种状况下 都只会触发onPause而不会触发onStop
1. 一个透明的包含Dialog的Activity 出现
2. 按poweroff锁屏
显示一个非activity的Dialog,是不会调用onPause和onStop的,由于此Dialog属于activity