Android 图解Activity生命周期
来源:互联网 发布:知乎到底是一帮什么人 编辑:程序博客网 时间:2024/05/16 05:51
作者原创,转载请标明出处:http://blog.csdn.net/yuxlong2010
当用户需要对手机通过屏幕进行交互时,比如打一个电话,拍张照片,发送一个邮件,或者查看地图。开发者就需要实现一个活动(Activity)。每个活动都将作为一个提供用户使用接口的窗口。它可以填满整个屏幕,也可以小于、大于屏幕甚至漂浮在其它窗口上面。作为android应用程序中最重要的四大组件之一。今天我们来学习一下Android中Activity的生命周期。
首先,创建一个android project,包含两个ActivityA和ActivityB
分十种情况讨论
第一,正常启动Activity A,输出结果如下:
第二,从ActivityA跳到ActivityB,并且ActivityB全屏。即ActivityA被ActivityB完全完全覆盖,输出结果如下:
第三,在第二种的情况下,从ActivityB返回到ActivityA,输出结果如下:
第四,从ActivityA跳到ActivityB,并且ActivityB非全屏。即ActivityA没有被ActivityB完全完全覆盖,输出结果如下:
第五,在第四种的情况下,从ActivityB返回到ActivityA,输出结果如下:
第六,在第一种情况下,点击home键,输出结果如下:
第七,在第六种的情况下,长按home键盘,从任务管理器中调出ActivityA,输出结果如下:
第八,在第一种情况下,点击电源键,输出结果如下:
第九,在第八种的情况下,在打开电源键回到ActivityA,输出结果如下:
第十,退出ActivityA,输出结果如下:
在对上述十种情况讨论完,可能觉得有点复杂,其实一点都不复杂,在梳理一下。首先最容易发现的是onCreate和onDestroy从头到尾都只执行了一次。onCreate在一个活动最先开始启动的时候执行了一次,onDestroy在活动结束关闭的时候执行了一次。另外可以发现除了在第四五两种情况下,其余情形的结果都相同,离开活动A,则A一次执行onPause和onStop,并且返回A的时候,一次执行onRestart、onStart和onResume。于是可以得出如下结论。只要不是在A进入到非全屏的其它活动中,则A执行onPause和onStop,反之只执行一个onPause,从其它活动返回,A执行onRestart、onStart和onResume,反之执行onResume。
在测试四五两种情况的时候,只要在AndroidManifest.xml中队ActivityB的节点中添加如下一行代码:
android:theme="@android:style/Theme.Dialog"
附活动ActivityA代码:
package com.yuxianglong.view;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;/** * * @ClassName: ActivityA * @Description: 对Activity生命周期的测试,重载了onCreate,onStart,onResume, * onStop,onPause * onDestroy,onRestart七个方法 * @author yuxianglong * @date 2013-7-9 上午9:09:22 * */public class ActivityA extends Activity {private Button button;private String Tag = "yuxlong2010";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(Tag, "I'm onCreate");setContentView(R.layout.activity_a);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartActivity(new Intent(ActivityA.this,ActivityB.class));}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.d(Tag, "I'm onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.d(Tag, "I'm onResume");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.d(Tag, "I'm onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d(Tag, "I'm onDestroy");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.d(Tag, "I'm onRestart");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.d(Tag, "I'm onPause");}}
- Android Activity生命周期 图解
- Android 图解Activity生命周期
- Android 图解Activity生命周期
- Android Activity生命周期图解
- Android Activity生命周期图解
- android Activity生命周期图解
- 图解android activity的生命周期
- Android之Activity 生命周期介绍【图解】
- Android Activity生命周期图解及常见问题汇总
- 图解Activity生命周期
- Activity生命周期经典图解:
- 【Android】【Activity生命周期】Activity生命周期
- android生命周期图解
- Android 生命周期图解
- Fragment与activity生命周期详细图解
- Android activity的生命周期
- Android Activity 生命周期
- Android:Activity的生命周期
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- C++ STL中Map的相关排序操作:按Key排序和按Value排序
- 修改alertview背景,以及按钮背景
- hdu1558--并查集+判断线段相交
- 解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析
- Android 图解Activity生命周期
- 关闭 PHPCMS 后台登录验证码
- Mysql杂乱笔记
- COM组件简介
- UIView的圆角设置
- UIImage 添加文字(水印)
- 前端开发者不可忽视的 5 个 HTML5 新特性
- 数组相关问题
- libevent windows 编译