真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android系列教程之Activity的生命周期

通過上一節(jié)“Android系列教程之Android項目的目錄結(jié)構(gòu)”我們已經(jīng)知道了什么是Activity,那么為什么我們創(chuàng)建一個Activity的導(dǎo)出類的時候為什么都要覆蓋Activity的onCreate方法呢,為什么會在onPause()方法中保存一些當前Activity中的變化,要弄明白這些就要先了解Activity的生命周期,也就是一個Activity才開始到結(jié)束都要經(jīng)過那些狀態(tài),下面通過一個例子了解Activity的聲明周期.

創(chuàng)新互聯(lián)專注于海拉爾網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供海拉爾營銷型網(wǎng)站建設(shè),海拉爾網(wǎng)站制作、海拉爾網(wǎng)頁設(shè)計、海拉爾網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造海拉爾網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供海拉爾網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一:Activity的生命周期方法

 Android提供了很多Activity的生命周期方法,比如我們常用的onCreate、onPause、onResume等。這里主要介紹粗粒度的周期方法,諸如onPostCreate、onPostResume等
這些細粒度的周期方法可以參考Android的API文檔,在你需要更細層次的控制的時候可以使用這些細粒度的方法。粗粒度的周期方法有以下幾個:
onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy(),從名字上就可以看出來這些方法在什么時候執(zhí)行。

二:測試Activity的生命周期方法的執(zhí)行順序

為了能更明白上這幾個周期放的執(zhí)行順序,我們新建一個HelloWorld項目,在Activity中覆蓋這幾個方法,打印出日志就可以看出來執(zhí)行順序了

  1. 1、新建HelloWorld項目

2、修改activity_main.xml代碼如下:




    

    

這里主要是為增加一個文本顯示和一個按鈕用于顯示信息和操作。

3、新建布局文件second.xml,內(nèi)容如下:




    

    

這里主要是為增加一個文本顯示和一個退出按鈕用于退出當前Activity。

4、新建一個Activity,名字為SecondActivity,要在AndroidManifest.xml也聲明一下,否則報錯:

Android系列教程之Activity的生命周期

SecondActivity類內(nèi)容如下: 

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity{
	private final static String TAG = "SecondActivity";
	
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		//退出按鈕
		Button btnExit = (Button) findViewById(R.id.exit);
		//為退出按鈕設(shè)置單擊事件
		btnExit.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				//關(guān)閉當前Activity,也就是退出
				finish();
			}
		});
	}
	//覆蓋 android.app.Activity.onStart方法
	protected void onStart(){
		super.onStart();
		Log.v(TAG, "onStart");
	}
	//覆蓋 android.app.Activity.onResume
	protected void onResume(){
		super.onResume();
		Log.v(TAG, "onResume");
	}
	
	protected void onPause(){
		super.onPause();
		Log.v(TAG, "onPause");
	}
	
	protected void onStop(){
		super.onStop();
		Log.v(TAG, "onStop");
	}
	
	protected void onDestroy(){
		super.onDestroy();
		Log.v(TAG,"onDestroy");
	}
	
}

我在各個周期方法里都加了日志信息,便于跟蹤Activity的運行過程

5、修改HelloWorld類,內(nèi)容如下:

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

public class HelloWorld extends Activity {
	private final static String TAG = "HelloWorld";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//打開第二個Activity的按鈕
		Button btnSecond = (Button) findViewById(R.id.second);
		btnSecond.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				//跳轉(zhuǎn)到SecondActivity
				startActivity(new Intent(HelloWorld.this,SecondActivity.class));
				finish();//關(guān)閉當前Activity
			}
		});
	}
	/*
	 * 重寫覆蓋 android.app.Activity里的方法
	 * 
	 */
	protected void onStart(){
		super.onStart();
		Log.v(TAG, "onStart");
	}
	
	protected void onResume(){
		super.onResume();
		Log.v(TAG, "onResume");
	}
	
	protected void onPause(){
		super.onPause();
		Log.v(TAG, "onPause");
	}
	
	protected void onStop(){
		super.onStop();
		Log.v(TAG, "onStop");
	}
	
	protected void onDestroy(){
		super.onDestroy();
		Log.v(TAG,"onDestroy");
	}

}

6、運行程序,分析結(jié)果,發(fā)現(xiàn)當程序啟動的時候,日志信息為下圖: 

  1.  
    Android系列教程之Activity的生命周期
     由此可見當打開一個Activity的時候,其周期方法執(zhí)行順序為:onCreate()->onStart()->onResume(),現(xiàn)在點擊“打開第二個Activity”按鈕,看日志的輸出如下圖: 
    Android系列教程之Activity的生命周期
     當應(yīng)用從Helloworld這個Activity啟動SecondActivity的時候,Android會先執(zhí)行HelloWorld的onPause方法,然后依次執(zhí)行SecondActivity的onCreate()->onStart()->onResume()方法
    當SecondActivity呈現(xiàn)到屏幕上的時候再一次執(zhí)行Helloworld的onStop()->onDestroy(),把HelloWorld從Activity棧中移除銷毀。這里值得提的就是HelloWorld 中finish方法,因為執(zhí)行了他所以
    HelloWorld才會從Activity棧中移除銷毀,這樣當你按“返回”鍵返回的時候就回不到HelloWorld 這個Activity的界面了,而是直接回到的Android的應(yīng)用程序列表 。

三:分析結(jié)果

根據(jù)上面例子可見一個Activity在啟動的時候會執(zhí)行onCreate()->onStart()->onResume(),在結(jié)束(或離開)的時候會執(zhí)行onPause()->onStop()->onDestroy(),這就是一個Activity的生命周期。
因此我們要在onCreate方法里把Activity的需要的東西準備好,也就是初始化;在onResume里對Activity里的東西做一些調(diào)整;在onPause做一些清理和保存工作(保存持久狀態(tài)),因為這是最后的
機會,因為onPause完成之前Android不會結(jié)束托管Activity類的進程,而之后進程可能被結(jié)束??偨Y(jié)一下這幾個周期方法的作用:

  1.  

    1. onCreate():創(chuàng)建Activity調(diào)用,用于Activity的初始化,還有個Bundle類型的參數(shù),可以訪問以前存儲的狀態(tài)。

    2. onStart():Activity在屏幕上對用戶可見時調(diào)用

    3. onResume():Activity開始和用戶交互的時候調(diào)用,這時該Activity是在Activity棧的頂部。

    4. onPause():Activity被暫停時調(diào)用,也就是你要對你能看到的這個Activity說byebye的時候調(diào)用,這里可以做一些清理和保存工作

    5. onStop():Activity被停止或者Activity變成不可見時調(diào)用

    6. onDestroy():Activity被從內(nèi)存中移除,一般發(fā)生在執(zhí)行finish方法時或者Android回收內(nèi)存的時候


好了,最后讓我們看一個API提供的Activity的狀態(tài)圖吧,看了他相信你對Activity的生命周期會更了解,如下圖: 
Android系列教程之Activity的生命周期

 

四:小結(jié)

這節(jié)主要是通過一個例子分析Activity聲明周期,并對常用生命周期方法做了一些說明,應(yīng)該什么時候使用他們。到這里Android的很基礎(chǔ)的東西已經(jīng)說完了!


文章名稱:Android系列教程之Activity的生命周期
文章起源:http://weahome.cn/article/pipocc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部