当前位置: 代码迷 >> Android >> Android生命周期里您或许不知道的事
  详细解决方案

Android生命周期里您或许不知道的事

热度:24   发布时间:2016-04-28 05:02:10.0
Android生命周期里你或许不知道的事

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");	}}

执行完代码之后,点击弹出对话框按钮我们发现AActivity的生命周期方法没有打印

结论:onPause弹出的新窗体必须是Activity才行,如果是Dialog,生命周期方法是不执行的。



  相关解决方案