zoukankan      html  css  js  c++  java
  • 图解:Activity生命周期

              当用户需要对手机通过屏幕进行交互时,比如打一个电话,拍张照片,发送一个邮件,或者查看地图。开发者就需要实现一个活动(Activity)。每个活动都将作为一个提供用户使用接口的窗口。它可以填满整个屏幕,也可以小于、大于屏幕甚至漂浮在其它窗口上面。作为android应用程序中最重要的四大组件之一。今天我们来学习一下Android中Activity的生命周期
    首先,创建一个android project,包含两个ActivityA和ActivityB
    分十种情况讨论

    第一,正常启动Activity A,输出结果如下:

     

    第二,从ActivityA跳到ActivityB,并且ActivityB全屏。即ActivityA被ActivityB完全完全覆盖,输出结果如下:

    第三,在第二种的情况下,从ActivityB返回到ActivityA,输出结果如下:

    第四,从ActivityA跳到ActivityB,并且ActivityB非全屏。即ActivityA没有被ActivityB完全完全覆盖,输出结果如下:

    第五,在第四种的情况下,从ActivityB返回到ActivityA,输出结果如下:

     

    第六,在第一种情况下,点击home键,输出结果如下:

    第七,在第六种的情况下,长按home键盘,从任务管理器中调出ActivityA,输出结果如下:

    第八,在第一种情况下,点击电源键,输出结果如下:

    第九,在第八种的情况下,在打开电源键回到ActivityA,输出结果如下:

    第十,退出ActivityA,输出结果如下:

              在对上述十种情况讨论完,可能觉得有点复杂,其实一点都不复杂,在梳理一下。首先最容易发现的是onCreate和onDestroy从头到尾都只执行了一次。onCreate在一个活动最先开始启动的时候执行了一次,onDestroy在活动结束关闭的时候执行了一次。另外可以发现除了在第四五两种情况下,其余情形的结果都相同,离开活动A,则A一次执行onPause和onStop,并且返回A的时候,一次执行onRestart、onStart和onResume。于是可以得出如下结论。只要不是在A进入到非全屏的其它活动中,则A执行onPause和onStop,反之只执行一个onPause,从其它活动返回,A执行onRestart、onStart和onResume,反之执行onResume。

              在测试四五两种情况的时候,只要在AndroidManifest.xml中队ActivityB的节点中添加如下一行代码:

              android:theme="@android:style/Theme.Dialog"

    附活动ActivityA代码:

    package com.yuxianglong.view;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    /**
     * 
     * @ClassName: ActivityA
     * @Description: 对Activity生命周期的测试,重载了onCreate,onStart,onResume,
     * 				 onStop,onPause
     *               onDestroy,onRestart七个方法
     * @author yuxianglong
     * @date 2013-7-9 上午9:09:22
     * 
     */
    public class ActivityA extends Activity {
    
    	private Button button;
    	private String Tag = "yuxlong2010";
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		Log.d(Tag, "I'm  onCreate");
    		setContentView(R.layout.activity_a);
    		button = (Button) findViewById(R.id.button);
    		button.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				startActivity(new Intent(ActivityA.this,ActivityB.class));
    			}
    		});
    	}
    
    	@Override
    	protected void onStart() {
    		// TODO Auto-generated method stub
    		super.onStart();
    		Log.d(Tag, "I'm  onStart");
    	}
    
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		super.onResume();
    		Log.d(Tag, "I'm  onResume");
    	}
    
    	@Override
    	protected void onStop() {
    		// TODO Auto-generated method stub
    		super.onStop();
    		Log.d(Tag, "I'm  onStop");
    	}
    
    	@Override
    	protected void onDestroy() {
    		// TODO Auto-generated method stub
    		super.onDestroy();
    		Log.d(Tag, "I'm  onDestroy");
    	}
    
    	@Override
    	protected void onRestart() {
    		// TODO Auto-generated method stub
    		super.onRestart();
    		Log.d(Tag, "I'm  onRestart");
    	}
    
    	@Override
    	protected void onPause() {
    		// TODO Auto-generated method stub
    		super.onPause();
    		Log.d(Tag, "I'm  onPause");
    	}
    }
    


  • 相关阅读:
    中国的人生路上是紧跟领导就会有回报
    重游三峡广场有感
    假如你没有我
    关于中小型软件企业技术管理的建议(转)
    街客
    游歌乐山有感
    高成就者的反常思维
    漫谈创业和管理-程序员5大思维障碍 (转)
    QQ情缘
    javascript library
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3180077.html
Copyright © 2011-2022 走看看