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,生命周期方法是不运行的。