Activity的生命周期
Activity:
Activity是应用程序的入口
负责创建窗口、用户交互等
一个程序可能会有多个Activity
使用方法:
继承自android.app.Activity;
OverrideonCreate();
setContentView()显示视图;
findViewById()实例化组件;
AndroidManifest.xml->application标签里声明;
指定程序运行时首先加载的Activity,定义action和category。
Activity栈:
Task--应用,包含一组Activity,以栈的形式管理;
某一个时刻只有一个Activity处在栈顶;
Activity创建,压栈,用户可交互;
Back,退栈;
Activity销毁,退栈;
如果用户离开一个任务很长时间。系统将清除了根activity之外的所有activity;
通过activity的属性可以控制和修改;
Activity生命周期:
完整生命周期
可见生命周期
前台可见生命周期
状态转换:
Activity从创建到进入运行态所触发的事件:
onCreate()-->onStart-->onResume()
从运行态到停止态所触发的事件:onPause()--->onStop()
从停止态到运行态所触发事件:onRestart()-->onStart()--->onResume()
从运行态到暂停态所触发事件:onPause()
下面是一个Activity生命周期的例子:
java文件分别是:ActivityLifeCyde.java、SecondActivity.java、DialogActivity.java
XML文件分别是:main.xml、second.xml、dialog_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:
第三个文件是:DialogActivity.java:
下面是XML文件的内容:
Main.xml:
Second.xml:
Dialog_activity.xml:
记得在AndroidManifest.xml文件中添加两句话:
实现的效果图为:
点前进按钮进入下面这个画面:
点返回按钮返回到上个界面:
点对话框按钮会进入这个界面:
点击退出按钮会出现下面的界面:
点击取消则返回当前页面,点击确定则退出当前Activity。