Activity为Android应用的四大组件之一,提供界面来与用户完成交互等操作。其中Activity的生命周期的知识这里做个笔记。

Activity的生命周期由以下几个部分组成:

1.onCreate :Activity Launch时调用,完成布局和资源的设置操作。

2.onStart :Activity开始可见,但是与用户之间不能交互(下面有例子说明)。

3.onResume :Activity可见,并且此时可以与用户完成交互操作。

4.onPause :Activity将不可见或则有其他如Dialog Activity在foreground时调用。

5.onStop :Activity完全不可见时调用,Activity进入后台。

6.onDestroy :Activity在后台,被finish or kill时调用。

7.onRestart :在onStop状态下重新变为可见时调用。

Activity的生命周期图如下图所示:

为了方便理解,写一段简单的代码来了解Activity的生命周期:

package com.example.steve.myfirstapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends AppCompatActivity {
private static final String TAG = "MyFirstApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//该布局文件中只有一个TextView,默认值为“Hello World!”
Log.d(TAG, "onCreate");
} @Override
protected void onRestart() {
Log.d(TAG, "onRestart");
super.onRestart();
} @Override
protected void onStart() {
Log.d(TAG,"onStart");
/*让进程sleep 5s
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG,"onStart Sleep 5s");
*/
super.onStart();
} @Override
protected void onResume() {
Log.d(TAG,"onResume");
super.onResume();
} @Override
protected void onPause(){
Log.d(TAG,"onPause");
super.onPause();
} @Override
protected void onStop(){
Log.d(TAG,"onStop");
super.onStop();
} @Override
protected void onDestroy() {
Log.d(TAG,"onDestroy");
super.onDestroy();
} } 

实际操作过程中,当打开Android应用时,MainActivity会经过onCreate -> onStart -> onResume三个阶段,此时若按home键或则back按键,MainActivity会经过onPause -> onStop这两个阶段,再进入此MainActivity时,会再调用onRestart -> onStart -> onResume三个阶段。

通过Recent按键调出此Android应用后,再尝试清除该Android应用后,MainActivity最后会调用到onDestory阶段。

其中在onStart中有注释掉一段代码,这段代码主要是用来让主线程Sleep 5s,这个操作时用来理解上文所说“Activity可见,但是不可与用户交互”。

当打开Android应用时,MainActivity会以此进入onCreate -> onStart -> onResume阶段。当尝试在onStart阶段对主线程做delay操作时,此时Activity呈现的样子如下图:

此时Activity为可见状态,但是其无法与用户交互。当进入onResume阶段时,此时Activity显示的内容如下图所示:

此时,Activity不但可见,而且还可以与用户完成交互(如果在layout.xml文件里添加Button会更方便理解)。

参考文献:https://github.com/codepath/android_guides/wiki/Activity-Lifecycle

Android Activity学习笔记(一)的更多相关文章

  1. Android Activity学习笔记——Activity的启动和创建

    http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html 最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函 ...

  2. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  3. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

  4. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  5. Android:日常学习笔记(9)———探究持久化技术

    Android:日常学习笔记(9)———探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失 ...

  6. Android:日常学习笔记(8)———探究UI开发(3)

    Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...

  7. Android:日常学习笔记(7)———探究UI开发(1)

    Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...

  8. Android:日常学习笔记(6)——探究活动(4)

    Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...

  9. Android:日常学习笔记(6)——探究活动(3)

    Android:日常学习笔记(6)——探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的 ...

随机推荐

  1. 运用CodeSmith Studio实现C#项目构架

    http://www.cnblogs.com/iCaca/category/80950.html http://www.cnblogs.com/BlueBreeze/archive/2011/07/1 ...

  2. 命令 crontab

    crontab命令选项基本只有对用户操作的选项: -u 指定一个用户 -l 列出某个用户的任务计划 -r 删除某个用户的任务 -e 编辑某个用户的任务 所以,要查看所有用户的,只能根据/etc/pas ...

  3. MVC用户登陆验证及权限检查(Form认证)

    1.配置Web.conf,使用Form认证方式   <system.web>     <authentication mode="None" />      ...

  4. 巧用ifstream判断文件是否存在

    最近在写手写数字的识别软件,训练样例数量巨大而且数字个数不唯一,有可能在中途粘出一部分做测试样例.因此写下面的脚本来获取文件名,之后丢到训练函数里. #include <algorithm> ...

  5. gulp使用外部配置文件

    这很有好处,因为它使得任务很干净,并且 config.json 可以被其他的任务运行器(例如grunt)重复利用. config.json { "desktop" : { &quo ...

  6. laravel中的$request对象构造及请求生命周期

    laravel应用程序中index.php是所有请求的入口.当用户提交一个form或者访问一个网页时,首先由kernel捕捉到该session PHP运行环境下的用户数据, 生成一个request对象 ...

  7. Machine Learning for hackers读书笔记(七)优化:密码破译

    #凯撒密码:将每一个字母替换为字母表中下一位字母,比如a变成b. english.letters <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' ...

  8. UVa 1608 (分治 中途相遇) Non-boring sequences

    预处理一下每个元素左边和右边最近的相邻元素. 对于一个区间[l, r]和区间内某一个元素,这个元素在这个区间唯一当且仅当左右两边最近的相邻元素不在这个区间内.这样就可以O(1)完成查询. 首先查找整个 ...

  9. HDU 1240 (简单三维广搜) Asteroids!

    给出一个三维的迷宫以及起点和终点,求能否到大终点,若果能输出最短步数 三维的问题无非就是变成了6个搜索方向 最后强调一下xyz的顺序,从输入数据来看,读入的顺序是map[z][x][y] 总之,这是很 ...

  10. Linux初识(转)

    文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接 ...