zoukankan      html  css  js  c++  java
  • 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");
    	}
    
    }

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

    结论:onPause弹出的新窗口必须是Activity才行。假设是Dialog,生命周期方法是不运行的。



  • 相关阅读:
    将博客搬至CSDN
    Fish 下报错 Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'.
    使用VMWare虚拟机打开MFC报错:不支持16位系统
    CodeForce Div 2 C. Masha and two friends
    POJ1426 Find The Multiple
    Educational Codeforces Round 54 (Rated for Div. 2) D:Edge Deletion
    CodeForce Educational round Div2 C
    Tenka 1 Computer Contest C-Align
    CodeForce edu round 53 Div 2. D:Berland Fair
    CodeForce 517 Div 2. C Cram Time
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7088118.html
Copyright © 2011-2022 走看看