Activity生命周期
来源:互联网 发布:linux运维常用脚本 编辑:程序博客网 时间:2024/05/02 17:17
首先创建两个Activity
ActivityA如下:
package com.z.ok;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ActivityA extends Activity implements OnClickListener {private Button one;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.one);Log.i("INFO","A onCreate()");one = (Button)findViewById(R.id.one);one.setOnClickListener(this);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i("INFO","A onDestroy()");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.i("INFO","A onPause()");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.i("INFO","A onRestart()");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.i("INFO","A onResume()");}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.i("INFO","A onStart()");}@Overrideprotected void onStop() {super.onStop();Log.i("INFO","A onStop()");}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(ActivityA.this,ActivityB.class);startActivity(intent);//finish();}}ActivityB如下:
package com.z.ok;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ActivityB extends Activity implements OnClickListener {private Button two;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.two);Log.i("INFO","B onCreate()");two = (Button)findViewById(R.id.two);two.setOnClickListener(this);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i("INFO","B onDestroy()");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.i("INFO","B onPause()");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.i("INFO","B onRestart()");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.i("INFO","B onResume()");}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.i("INFO","B onStart()");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.i("INFO","B onStop()");}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(ActivityB.this,ActivityA.class);startActivity(intent);//finish();}}启动APP
ActivityA启动,打印信息如下:
A onCreate();//创建,初始化组件A onStart();//让ActivityA显示A onResume();//让ActivityA可操作1.ActivityA启动ActivityB未调用finishi()方法
打印信息如下:
A onPause();//ActivityA不可操作B onCreate();//创建,初始化组件B onStart();//让ActivityB显示B onResume();//让ActivityB可操作A onStop();//让ActivityA不显示此时ActivityB按Back返回到ActivityA,打印信息如下:
B onPause();A onRestart();A onStart();A onResume();B onStop();B onDestroy();注意:按下Back返回键,当前Activity会被销毁,因而调用onDestroy()方法
2.ActivityA启动ActivityB且ActivityA调用了finish()
打印信息如下:
A onPause();//不可操作B onCreate();//创建,初始化组件B onStart();//让ActivityB显示B onResume();//让ActivityB可操作A onStop();//让ActivityA不显示A onDestroy();//ActivityA销毁3.ActivityA启动后直接按HOME键回到界面,打印消息如下:
A onCreate();//创建,初始化组件A onStart();//让ActivityA显示A onResume();//让ActivityA可操作A onPause();//不可操作A onStop();//不显示界面从桌面回到ActivityA界面,打印消息如下:
A onRestart();A onStart();A onResume();4.如果ActivityB是个Dialog(显示出来并未将ActivityA完全覆盖)
ActivityA启动ActivityB未调用finish()方法,打印信息如下:
A onPause();B onCreate();B onStart();B onResume();//此处不会调用A onStop();因为B是个Dialog并未将ActivityA完全覆盖
点击空白处:
B onPause();A onResume();B onStop();B onDestroy();
5.ActivityA启动ActivityB且调用了finish();
A onPause();B onCreate();B onStart();B onResume();A onStop();//界面消失A onDestroy();//销毁点击空白处
B onPause();B onStop();//因为A已经销毁了B onDestroy();最后:
如果ActivityA启动ActivityB(未调用finish()方法)
且ActivityB启动ActivityC(未调用finish()方法)
销毁日志:
<pre name="code" class="java">A onDestroy();
如果ActivityA启动ActivityB(调用finish()方法)
且ActivityB启动ActivityC(未调用finish()方法)
销毁日志:B onDestroy(); //由于ActivityA已经调用finish()方法销毁了
小结:onDestroy()方法只有在调用finish()方法或者Back返回键时调用,如果强杀进程,只会调用最开始的Activity的onDestroy()
(即ActivityA启动ActivityB启动ActivityC,然后直接杀进程,只会调用A onDestroy())
onRestart()方法的调用时由于该Activity并未调用onDestroy()方法销毁,可以理解为重新唤起
onPause()方法和onResume()方法是对应的,前者不可操作,后者可操作
onStart()方法和onStop()方法也是对应的,前者显示界面,后者不显示
0 0
- Activity 生命周期
- Activity生命周期
- Activity 生命周期
- Activity 生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- activity生命周期
- Activity 生命周期
- Activity生命周期
- Activity 生命周期
- activity生命周期
- Activity 生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Linux设备模型--总线
- UPDATE T_user_table 僵死
- linux 修改hostname
- mybatis 批量删除 修改 选择
- NSPredicate
- Activity生命周期
- JAVA Proxy(代理) 学习
- linux 打开外部传送来的文件中文乱码问题解决
- PriorityQueue 的概念及其使用
- poj 3177 Redundant Paths 边双连通分量+缩点
- Ext中apply及applyIf方法的应用
- js 实现封装
- C++中对象指针的使用
- 程序员面试之性格篇