首页 > 代码库 > Android——Activity的生命周期

Android——Activity的生命周期


  

一,Demo測试Activity的生命周期


      写两个Activity:


 

package com.example.activity_04;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class FirstActivity extends Activity {

	private Button myButton=null;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	System.out.println("firstActivity-->onCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        myButton=(Button)findViewById(R.id.myButton);
        myButton.setOnClickListener(new BtnClick());

    }

    class BtnClick implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自己主动生成的方法存根
			Intent intent=new Intent();
			intent.setClass(FirstActivity.this,SecondActivity.class );
			FirstActivity.this.startActivity(intent);
		}
    	
    	
    }
	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.first, menu);
        return true;
    }

	 @Override
	protected void onRestart() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onRestart");
		super.onRestart();
	}
	 

	@Override
	protected void onDestroy() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onDestroy");
		super.onDestroy();
	}


	@Override
	protected void onPause() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onPause");
		super.onPause();
	}


	@Override
	protected void onResume() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onResume");
		super.onResume();
	}


	@Override
	protected void onStart() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onStart");
		super.onStart();
	}


	@Override
	protected void onStop() {
		// TODO 自己主动生成的方法存根
		 System.out.println("firstActivity-->onStop");
		super.onStop();
	}
    
    
}



package com.example.activity_04;

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onCreate");
		super.onCreate(savedInstanceState);
	}

	@Override
	protected void onDestroy() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onDestroy");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onRestart");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onResume");
		super.onResume();
	}

	@Override
	protected void onStart() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onStart");
		super.onStart();
	}

	@Override
	protected void onStop() {
		// TODO 自己主动生成的方法存根
		System.out.println("SecondActivity--->onStop");
		super.onStop();
	}
	
}


然后启动程序,如图:


技术分享


      能够看到第一个Activity以此被调用的方法。


onCreate

OnStart

OnResume

第一次创建时调用,能够配置使用的layout文件

Activity能被我们看到的时候

Activity能够获得用户焦点的时候被调用

 


     之后点击第一个Activiyt上的button,跳转到第二个Activity:




   技术分享


     发现第一个Activity的OnPause方法被调用,接着是初始化一个新的Activity被调用的方法,当第二个Activity出现之后,第一个Activity的OnStop方法被调用。


OnPause

OnStop

应用程序启动另外一个activity的时候,会调用第一个activityOnPause方法

:通常保存当前Activity的数据

 

Activity处于不可见的时候会调用第一个activityOnstop方法,假设新出来的activity不全然遮挡住第一个activity,则不会调用

 


        接着点击backbutton,



技术分享



注意这里第一个Activity起来之后先调用的是OnRestart方法。


OnDestory

OnRestart

销毁Activity

 

一般两种情况会调用这种方法:

1,调用activityfinish方法

2,当系统资源不够用的时候

 

又一次调用paused activity

 



小结:



技术分享




      Activity调用的生命周期感觉相似.NET里面页面生命周期。感觉比那个简单点儿。








Android——Activity的生命周期