今天介绍一下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. 记录一下表格用poi的导出word

    也是网上找的代码http://53873039oycg.iteye.com/blog/2152009,但是横向合并单元格没成功.只能用很蠢的办法建立了好多table public void fillT ...

  2. angularJS中ng-change的用法

    <html> <head> <meta charset="utf-8"> <script src="http://apps.bd ...

  3. hiho_1087_哈密顿环

    题目 在一个有向图上,从一点A出发,经过所有除A的顶点一次且仅经过一次,最后到达起始点A,所形成的路径为哈密顿环.两个哈密顿环不同,当且仅当路径上的任意一个顶点P的下一个顶点不同.     给出一个顶 ...

  4. python 键值对的树实现

    #coding:utf-8 __author__ = 'similarface' class KeyedBinaryTree: def __init__(self):self.tree=EmptyNo ...

  5. linux删除文件未释放空间问题处理

    linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/ ...

  6. SQL实现数组的功能

    今天在工作遇到了一个问题,需要往表中添加数量不小而且没有规律的的数据.思考后我想到了使用高级语言中的数组功能解决. 由于SQL Server并没有数组类型,ANSI SQL-92标准中并没有任何有关数 ...

  7. hdu 1075 二分搜索

    还是写一下,二分搜索好了 这道题开数组比较坑... 二分,需要注意边界问题,例如:左闭右闭,左闭右开,否则查找不到or死循环 先上AC代码 #include<iostream> #incl ...

  8. 8个实用的页面布局和用户界面jQuery插件

    网页设计师和网页开发人员在做项目的时候可能会有一些页面的布局或者对于UI有一些特定的要求.可能一些需求不能单独使用CSS就能实现的.于是很多时候开发人员都会消耗大量的时间和精力去写一些JS来协助实现. ...

  9. Shader for sprite clipping

    Unity3D - Shader for sprite clippinghttp://stackoverflow.com/questions/23165899/unity3d-shader-for-s ...

  10. hdu-----(1113)Word Amalgamation(字符串排序)

    Word Amalgamation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...