Activity的生命周期

Activity

Activity是应用程序的入口

负责创建窗口、用户交互等

一个程序可能会有多个Activity

使用方法:

继承自android.app.Activity

OverrideonCreate()

setContentView()显示视图;

findViewById()实例化组件;

AndroidManifest.xml->application标签里声明;

指定程序运行时首先加载的Activity,定义actioncategory

Activity栈:

Task--应用,包含一组Activity,以栈的形式管理;

某一个时刻只有一个Activity处在栈顶;

Activity创建,压栈,用户可交互;

Back,退栈;

Activity销毁,退栈;

如果用户离开一个任务很长时间。系统将清除了根activity之外的所有activity

通过activity的属性可以控制和修改;

Activity的生命周期

Activity生命周期:

完整生命周期

可见生命周期

前台可见生命周期

Activity的生命周期

状态转换:

Activity从创建到进入运行态所触发的事件:

onCreate()-->onStart-->onResume()

从运行态到停止态所触发的事件:onPause()--->onStop()

从停止态到运行态所触发事件:onRestart()-->onStart()--->onResume()

从运行态到暂停态所触发事件:onPause()

下面是一个Activity生命周期的例子:

java文件分别是:ActivityLifeCyde.javaSecondActivity.javaDialogActivity.java

XML文件分别是:main.xmlsecond.xmldialog_activity.xml

下面是java文件的内容:

第一个文件是ActivityLifeCyde.java

packagecn.class3g.activity;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.AlertDialog.Builder;

importandroid.content.DialogInterface;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.widget.Button;

publicclassActivityLifeCycleextendsActivity{

privatestaticfinalStringTAG="lifeCycle";

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Log.i(TAG,"onCreate");

ButtongoBtn=(Button)this.findViewById(R.id.go);

Buttongo_toBtn=(Button)this.findViewById(R.id.go_to);

Buttongo_to_quBtn=(Button)this.findViewById(R.id.go_to_qu);

goBtn.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

Intentintent=newIntent(ActivityLifeCycle.this,

SecondActivity.class);

startActivity(intent);

}

});

go_toBtn.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

Intentintent=newIntent(ActivityLifeCycle.this,

DialogActivity.class);

startActivity(intent);

}

});

go_to_quBtn.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

Log.d(TAG,"showAlerDialog");

showAlertDialog();

}

});

}

publicvoidshowAlertDialog(){

AlertDialog.Builderbuilder=newBuilder(

ActivityLifeCycle.this);

builder.setMessage("确认退出吗?");

builder.setTitle("提示");

builder.setPositiveButton("确定",

newandroid.content.DialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,intwhich){

dialog.dismiss();

ActivityLifeCycle.this.finish();

}

});

builder.setNegativeButton("取消",

newandroid.content.DialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,intwhich){

dialog.dismiss();

}

});

//创建并显示

builder.create().show();

}

protectedvoidonStart(){

super.onStart();

Log.i(TAG,"onStart");

}

protectedvoidonResume(){

super.onResume();

Log.i(TAG,"onResume");

}

protectedvoidonPause(){

super.onPause();

Log.i(TAG,"onPause");

}

protectedvoidonStop(){

super.onStop();

Log.i(TAG,"onStop");

}

protectedvoidonDestroy(){

super.onDestroy();

Log.i(TAG,"onDestroy");

}

protectedvoidonRestart(){

super.onRestart();

Log.i(TAG,"onRestart");

}

}

第二个文件是SecondActivity.java

Activity的生命周期

第三个文件是:DialogActivity.java

Activity的生命周期

下面是XML文件的内容:

Main.xml

Activity的生命周期

Second.xml

Activity的生命周期Activity的生命周期

Dialog_activity.xml:

记得在AndroidManifest.xml文件中添加两句话:

实现的效果图为:

点前进按钮进入下面这个画面:

点返回按钮返回到上个界面:

点对话框按钮会进入这个界面:

点击退出按钮会出现下面的界面:

点击取消则返回当前页面,点击确定则退出当前Activity