把Activity看成一个页面,在Android系统中,Activity 被作为 Activity 栈进行管理.
- 当前活动的Activity 处于栈顶.
- 非活动的Activity 压在栈中, 处于等待状况
一个Activity的状态有如下4种:
- 活动. (处于栈顶, 有焦点,可见)
- 暂停. (失去焦点,但可见)
- 停止. (失去焦点,不可见)
- 销毁. (被系统或进程结束)
一个Activity的方法有如下7个:
- .onCreate() 创建
- .onStart() 启动
- .onRestart() 重启.
- .onResume() 恢复
- .onPause() 暂停
- .onStop() 停止
- .onDestroy() 销毁
Activity 的生命周期的 Cases
a. Activiy1 启动
- Code:
super.onCreate()
- 运行顺序: ( Activity1 : onCreate() -> onStart() ->onResume() )
b. 从Activity1 跳转到 Activity2, 然后关闭Activity1.
- Code:
Intent intent = new Intent(); //新建一个Intent对象.
intent.setClass(Activity1.this, Activity2.class); //设定Intent要启动的类.
startActivity(intent); //启动一个新的Activity
Activity1.this.finish(); //关闭当前的Activity.
- 运行顺序: (Activity1: onPause() )-> ( Activity2: onCreate() ->onStart() ->onResume()) -> (Activity1:onStop() ->onDestroy())
c. 关闭Activity1, 退出程序 , 或者按 "BACK" 键.
- Code:
Activity1.this.finish();
-运行顺序: Activity1: onPause()->onStop()->onDestroy();
d. 按"HOME"键, 然后再运行程序.
- 运行顺序: Activity1: onPause()->onStop() => 运行其他程序 => 再运行本程序: Activity1: onRestart()->onStart()-)>onResume()
e. 刷新Activity1
- Code:
public class LifeCycleActivity extends Activity {
/** Called when the activity is first created. */
private static final String TAG = "MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "onCreate()");
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Intent intent = new Intent(LifeCycleActivity.this, Activity2.class);
//startActivity(intent);
reload();
}
});
}
@Override
protected void onDestroy() {
Log.i(TAG, "onDestroy()");
super.onDestroy();
}
@Override
protected void onPause() {
Log.i(TAG, "onPause()");
super.onPause();
}
@Override
protected void onRestart() {
Log.i(TAG, "onRestart()");
super.onRestart();
}
@Override
protected void onResume() {
Log.i(TAG, "onResume()");
super.onResume();
}
@Override
protected void onStart() {
Log.i(TAG, "onStart()");
super.onStart();
}
@Override
protected void onStop() {
Log.i(TAG, "onStop()");
super.onStop();
}
public void reload(){
Intent intent = getIntent();
this.finish();
startActivity(intent);
}
}
-运行顺序: onCreate()->onStart()->onResume() ==> 点按纽后 onPause()->onCreate()->onStart()->onResume()->onStop()->onDestroy()
更多的可以参考:
http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
分享到:
相关推荐
深入理解Activity生命周期示例代码.
Activity生命周期的完美呈现,通过一个简单的项目,可以比较好地理解Activity的整个生命周期,对于初学者有一定的帮助!
基本的Activity生命周期过程,有助于理解Activity生命周期的运行,适合初学者。
对安卓activity生命周期的理解,详见每一个logcat里
对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被...
本PDF主要是介绍Activity生命周期,目的是为了更的多的android朋友初学者或者不太深入理解的朋友更加地深入android开发程序中去,并全面介绍Activity生命周期中的细节,理解Activity的生命周期对应用程序开发来说是...
activity生命周期 为了理解android的activity生命周期写的demo
理解Activity的生命周期以及各个生命周期方法的使用。掌握页面切换的两种方法。 【实践要求】 1.理解Activity的组成结构和创建过程; 2.了解Activity的生命周期; 3.掌握Activity页面切换方法。 【任务和结果】 1....
这篇文档是我在学习android 时对于生命周期的一点理解,一共使用了两个例子,内附例子代码,布局文件代码放上去,因为布局非常简单啦。。。
Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之... 二、理解Activity的生命周期 手机最重要也是最基础的功能是打电话,也就意味着电话来的时候可能随时要把现在的程序暂停,如果电量不足
1. 最上層(即焦點所在)。 2. 不在最上層,但被上層蓋掉一部份(還有一部份可看到)。...Activity 是我们开发Android应用程序最重要的一个类。这个类的内容比较多,我理解多少 就写多少,希望你喜欢:)
本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期。搞明白Activity的生命周期是至关重要的,因为只有搞明白每个生命周期的每个阶段,你才能在不同段做不同的事情。 接...
建立配置和使用Activity,Activity生命周期与回调机制
Activity生命周期 1.图解Activity生命周期: 2.七个方法的含义 一、 onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。 二、 onStart :该方法的触发表示所属活动将被展现给用户,...
android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误。这篇文章很长,希望不要耽误大家的时间~ 今天不会涉及太多关于activity栈的东西,主要说...
Activity生命周期的demo,便于对Activity生命周期的理解
这个是activity界面之间图片切换,启动好多应用图片的切换,用的是Handler多线程做的,有注视,你可以理解activity生命周期,和handler运用。
Android 开发 (实验四) 实验题目:Activity生命周期验证试验 指导老师: 班 级:计算机科学与技术系班 姓 名:( 1. 实验目的 1、深入理解Activity运行机制和原理。 2、掌握Activity的声明周期各个阶段工作流程。 ...
在努力弄清楚各个部分如何组合之后,我进行了一些研究,并整理了完整的Android Activity / Fragment生命周期图。 它具有两个并行的生命周期(活动和片段),它们按时间垂直排列。 生命周期阶段将按照活动和片段的...
对fragment的生命周期函数的执行先后顺序进行深入理解,本人在面试时,经常被问到的一道题。尤其是对比Activity的生命周期函数,并说出两者的差异与联系。