今天介绍一下Android中最常用的组件activity的生命周期。当activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理。当前活动的Activity处于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。

归纳起来Activity大致会经过如下四个状态。

活动状态:当前Activity位于栈顶,用户可见,可以获得焦点。

暂停状态:其他Activity处于栈顶,该Activity依然可见,只是不能获得焦点。

停止状态:该Activity不可见,失去焦点。

销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。

下图显示了Activity生命周期及相关回调方法。

从图中可以看出,在Activity的生命周期中,如下方法会被系统回调。

onCreate:创建Activity时被回调。

onStart:启动Activity时被回调。

onRestart:重新启动Activity时被回调。

onResume:恢复Activity时被回调。

onPause:暂停Activity时被回调。

onStop:停止Activity时被回调。

onDestroy:销毁Activity时被回调。

下面演示一下,演示代码:

public class Lifecycle extends Activity
{
final String TAG = "--CrazyIt--";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//输出日志
Log.d(TAG , "-------onCreate------");
Button bn = (Button)findViewById(R.id.bn);
//为bn按钮绑定事件监听器
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
//结束该Activity
Lifecycle.this.finish();
}
});
}
@Override
public void onStart()
{
super.onStart();
//输出日志
Log.d(TAG , "-------onStart------");
}
@Override
public void onRestart()
{
super.onRestart();
//输出日志
Log.d(TAG , "-------onRestart------");
}
@Override
public void onResume()
{
super.onResume();
//输出日志
Log.d(TAG , "-------onResume------");
}
@Override
public void onPause()
{
super.onPause();
//输出日志
Log.d(TAG , "-------onPause------");
}
@Override
public void onStop()
{
super.onStop();
//输出日志
Log.d(TAG , "-------onStop------");
}
@Override
public void onDestroy()
{
super.onDestroy();
//输出日志
Log.d(TAG , "-------onDestroy------");
}
}

将Activity设置为程序的入口Activity,当程序启动并执行该Activity,在LogCat窗口输出:

当按下主页键,返回到桌面,当前该Activity将失去焦点且不可见,但该Activity并未被销毁,只是进入停止状态。此时的LogCat输入:

再次找到该应用并启动它,将可以看到下面的输出:

如果用户单击返回键,该Activity将会结束自己,LogCat输出:

这就是我对Activity生命周期的一些认识,希望能够帮助到大家。

注:本人参考了疯狂Android讲义。

Andoid activity 生命周期的更多相关文章

  1. [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!

    转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...

  2. Activity生命周期(深入理解)

    今天看到一篇大神总结Activity的文章,内容甚为详细,特此转载http://www.cnblogs.com/lwbqqyumidi/p/3769113.html Android官方文档和其他不少资 ...

  3. Android Activity生命周期

    从android api文档摘抄出来的activity生命周期图如下: Activity有如下四种状态 a.活动状态  activity处于屏幕前台,获取到了焦点可以和用户进行交互,同一时刻只有一个a ...

  4. Android Activity生命周期详讲

    管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...

  5. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  6. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  7. 安卓activity生命周期

    相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法, ...

  8. Activity生命周期 onCreate onResume onStop onPause (转)

    Android应用开发提高系列(6)——Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

  9. Android总结篇系列:Activity生命周期

    Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity生命周期进行一次总结. Activity是由Activit ...

随机推荐

  1. String.join()方法的使用

    String.join()方法是JDK1.8之后新增的一个静态方法,使用方式如下所示: String  result = String.join("-","java&qu ...

  2. Maven最佳实践:划分模块

    http://juvenshun.iteye.com/blog/305865 ************************************* "分天下为三十六郡,郡置守,尉,监& ...

  3. hiho_1079_离散化

    题目 在长度为L的宣传栏上张贴N张海报,将宣传栏分为L个长度为1的单位,海报长度为整数,且高度和宣传栏相同,左右边界和宣传栏单位之间缝隙重合(即海报总是跨越整数个单位).后贴的海报可能会覆盖之前贴的海 ...

  4. Hbase之批量删除数据

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  5. Windows菜单

    目录 第1章 Windows菜单    1 1.1 窗口菜单和弹出菜单    1 1.2 使用SetMenu    2 1.3 使用TrackPopupMenu    4 第1章 Windows菜单 ...

  6. java final

    final:(最终的)看不懂时有必要分析内存画图,不同方法的局部变量是相互独立的额不要被所起的名所困扰. 1)每个方法运行时jvm,都会为其开辟一片内存空间.内存空间是属于这个方法的, 同时,方法中的 ...

  7. dede在线留言

    登录dede后台,在[核心]---[频道维护]---[自定义表单]中根据需要创建需要的表单.   点击[增加新的自定义表单],添加在线留言表单.确定即可. 注意: ①在这里只需要修改[自定义表单名称: ...

  8. android内存泄露小谈

    在做android的时候,用的语言大部分情况下都是java.以前最开始做的是编译器开发, 大部分情况都是用c语言和x86与arm架构的汇编,后来接触到ios用的是OC.对比之下, 感觉还是java用起 ...

  9. linux笔记:linux系统安装-vmware虚拟机安装

    vmware版本:vmware8(百度云里备份了安装程序VMware_Workstation_wmb.zip) vmware软件安装过程: 1.在百度云中下载安装程序压缩包VMware_Worksta ...

  10. MySQL通用优化手册

    转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...