以下是自己参考别人的讲解,和自己验证的过程:
一、Activity生命周期是指Activity从启动到销毁的过程
二、Activity表现为四种状态。
·活动状态:Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互
·暂停状态:Activity界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互
·停止状态:Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡
·非活动状态:不在这三种状态中的Activity则处于非活动状态。
三、回调函数:
下面代码是验证各种操作时,回调函数的处理过程,函数继承 A ctivity中方法,并对以上方法进行了重写,加入了打印语句;点击 BUTTON按钮可以打开另一个程序,在Logcat中显示回调函数的调用过程;点击退出按钮关闭另一个程序时的调用过程;
下面有2中点击Button的调用方法:
具体请看代码:
1是显示红色的代码 ,但是需要在 main.xml中Button 中加入下面的代码
android:onClick="myclick"
myclick 必须和JAVA代码中 处理方法名字一致;
2是设置监听。
public class ActivelifecycleActivity extends Activity {
person person;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//开始
setContentView(R.layout.main);
System.out.println("onCreate");
Button button = (Button) this.findViewById(R.id.button1);
// button.setOnClickListener(new myclick());
//
}
// class myclick implements android.view.View.OnClickListener{
//
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// person = new person();
// person.setAge(20);
// person.setName("你他吗的谁呀!");
// Intent intent =new Intent(ActivelifecycleActivity.this, second.class);
// intent.putExtra("username", "张三");//将用户名传给第二个应用布局
// intent.putExtra("person", person);
// startActivity(intent);
// }
// }
public void myclick(View view){
person = new person();
person.setAge(20);
person.setName("你他吗的谁呀!");
Intent intent =new Intent(ActivelifecycleActivity.this, second.class);
intent.putExtra("username", "张三");//将用户名传给第二个应用布局
intent.putExtra("person", person);
startActivity(intent);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("onDestory");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
System.out.println("onPause");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
System.out.println("onRestart");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
System.out.println("onStart");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("onStop");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
System.out.println("onResume");
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
int i = 0;
if(i==0){
i++;
Toast.makeText(this, "请再按一次退出", Toast.LENGTH_LONG).show();
}else{
this.finish();
}
}
}
Activity有四种本质区别的状态:
在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被杀掉。
如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
下面的图显示了Activity的重要状态转换,矩形框表明Activity在状态转换之间的回调接口,开发人员可以重载实现以便执行相关代码,带有颜色的椭圆形表明Activity所处的状态。
--------------------------
activity 生命周期, lifecycle
在上图中,Activity有三个关键的循环:
整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。
Activity的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。所有的Activity都需要实现 onCreate(Bundle)去初始化设置,大部分Activity需要实现onPause()去提交。