02—android入门_activity的生命周期
1、Activity的三个状态简介
1)当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。
2)当它失去焦点但仍然对用户可见时,它处于暂停状态。即在它之上有另外一个Activity。这个Activity也许是透明的,或者没有完全覆盖全屏,所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但系统处于极低内存时仍然可以杀死这个Activity。
3)完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。
2、Activity调用的方法
当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:
void onCreate(Bundle savedInstanceState)——创建Activity时被回调方法(只会被调用一次)
void onStart()——启动Activity时被回调的方法
void onRestart()——重新启动Activity时被回调的方法
void onResume()——恢复Activity时被回调的方法
void onPause()——暂停Activity时被回调的方法
void onStop()——停止Activity时被回调的方法
void onDestroy()——销毁Activity时被回调的方法(只会被调用一次)
3、Activity生命周期的分析
1)完整生命周期
1、当进入activity界面时,调用onCreate、onStart、onResume方法
2、当按下“后退”时,调用onPause、onStop、onDestroy方法
2)可视化生命周期
3、当首次进入activity时,调用onCreate、onStart、onResume方法
4、当按下“home”时,调用onPause、onStop方法
5、当再次进入activity时,调用onRestart、onStart、onResume方法
重复4和5的步骤
3)前台生命周期
6、通过打开对话框(通过theme设置),调用onResume、onPause方法
重复6的步骤
4、Activity生命周期举例,请仔细阅读:
package www.youkuaiyun.com.activityb;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG="MainActivity";
//创建Activity时被回调方法(只会被调用一次)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG,"----onCteate-----");
}
//启动Activity时被回调的方法
@Override
protected void onStart() {
super.onStart();
Log.i(TAG,"----onStart-----");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"----onRestart-----");
}
//恢复Activity时被回调的方法
@Override
protected void onResume() {
super.onResume();
Log.i(TAG,"----onResume-----");
}
//暂停Activity时被回调的方法
@Override
protected void onPause() {
super.onPause();
Log.i(TAG,"----onPause-----");
}
//停止Activity时被回调的方法
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"----onStop-----");
}
//销毁Activity时被回调的方法(只会被调用一次)
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG,"----onDestory-----");
}
public void openDialog(View v){
//对象链式操作
new AlertDialog.Builder(this).setTitle("我是对话框").setMessage("你是否真的要退出?")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了确定",
Toast.LENGTH_LONG).show();
}
}).setNeutralButton("中立", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了中立",
Toast.LENGTH_LONG).show();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了取消",
Toast.LENGTH_LONG).show();
}
}).create().show();
}
public void openActivity(View v){
Intent intent=new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);
}
}
5、结果显示: