设为首页 加入收藏

TOP

Android Activity生命周期详解(一)
2014-11-24 11:30:42 来源: 作者: 【 】 浏览:0
Tags:Android Activity 生命 周期 详解

今天通过实例方法系统的看了一下activity的声明周期。就是把整个过程的状态log出来。或者通过对话框显示出来。


源代码贴出来:
注:另一个activity的代码没有贴,大家随便写。注意activity的注册
package com.yelbosh.test;


import com.yelbosh.test.classes.MyButton;



public class MainActivity extends Activity {
private AlertDialog.Builder builder;
private int count=0;
private final String TAG = "log";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.button1);
builder = new AlertDialog.Builder(this);

builder.setMessage("你确定这么做吗亲?").
/**
* 肯定的按钮函数
*/
setPositiveButton("Yes", new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub


}
}).
/**
* 否定的按钮函数
*/
setNegativeButton("No", new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub


}
});
builder.setMessage("OnCreate" + (count++));
builder.create().show();
Log.i(TAG,"oncreate");


btn1.setOnClickListener(new View.OnClickListener() {


public void onClick(View arg0) {
// TODO Auto-generated method stub
/**
* 通过dialog的builder来构造窗口
*/
Intent intent = new Intent();
intent.setClass(MainActivity.this, SubActivity1.class);
startActivity(intent);
}
});

}


/**
* 当activity变得对用户可见的时候被调用
*/
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
builder.setMessage("onStart" + (count++));
builder.create().show();
Log.i(TAG,"onstart");
}




/**
* 当activity变得对用户不可见的时候被调用
*/
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
builder.setMessage("onStop" + (count++));
builder.create().show();
Log.i(TAG,"onstop");
}



/**
* 当界面准备和用户交互的时候被调用
*/
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
builder.setMessage("OnResume" + (count++));
builder.create().show();
Log.i(TAG,"onresume");
}

/**
* 当系统准备创建另一个屏幕的时候被调用
*/
@Override
protected void onPause(){
//TODO Auto-generated method stub
super.onPause();
builder.setMessage("onPause" + (count++));
builder.create().show();
Log.i(TAG,"onpause");
}



/**
* 当activity被销毁的时候被调用
*/



@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
builder.setMessage("onDestroy" + (count++));
builder.create().show();
Log.i(TAG,"ondestroy");
}



/**
* 当activity被再次调用的时候被调用
*/
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
builder.setMessage("onRestart" + (count++));
builder.create().show();
Log.i(TAG,"onrestart");
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}




}



执行结果,除了logcat的整个过程之外,通过对话框也可以看出整个过程。
当程序的第一个activity开始和用户交互之前,分别依次执行onCreate方法(创建activity),onStart方法(变得可见),onResume方法(开始交互)
然后这个时候点击跳转的按钮,会依次执行onPause方法(程序准备创建目标activity),onStop方法(先前的activity变得不可见),
这个时候已经跳转到目标activity了,这个时候按下返回键,这个时候会调用先前的activity的onRestart方法(当重新返回这个activi

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android使用Google Map浅谈 下一篇使用Android SharedPreference判..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)