Android生命周期预计连刚開始学习的人都再熟悉只是的东西了,但这里我抛出几个问题。也许大家曾经没有想过或者可能认识的有些错误。
一、当A启动B时,A和B生命周期方法运行的先后顺序是如何的?当按返回键返回时。又是如何的?(读者能够先想想,可能会跟你的答案不一致)
A--->B时。打印结果例如以下:
按返回键B--->A,打印结果例如以下:
结论:先运行当前显示Activity的onPause方法。接着运行完将要显示Activity的生命周期方法。最后再运行当前显示Activity的其他生命周期方法
二、生命周期onPause 弹出的新窗口是指Activity的还是随意的,比方Dialog
上代码:
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AActivity extends Activity {
private static final String TMG = "ActivityTask";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TMG, "AActivity onCreate");
setContentView(R.layout.layout_task);
Button _buttonStartB = (Button) findViewById(R.id.buttonStartB);
_buttonStartB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(AActivity.this);
builder.setTitle("Pick a color");
AlertDialog alert = builder.create();
alert.show();
}
});
}
@Override
protected void onResume() {
super.onResume();
Log.i(TMG, "AActivity onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TMG, "AActivity onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TMG, "AActivity onRestart");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TMG, "AActivity onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TMG, "AActivity onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TMG, "AActivity onDestroy");
}
}运行完代码之后,点击弹出对话框button我们发现AActivity的生命周期方法没有打印
结论:onPause弹出的新窗口必须是Activity才行。假设是Dialog,生命周期方法是不运行的。