欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Activity生命周期詳解

 更新時(shí)間:2016年08月08日 15:31:47   作者:chino  
本篇文章主要介紹Android Activity的生命周期,這里整理了關(guān)于Activity的生命周期資料并附測試代碼示例,有興趣的小伙伴可以參考下

Activity 的生命周期。

一、理解Activity

Activity是Android程序的4大組件之一。

Activity是Android程序的表示層。程序的每一個(gè)顯示屏幕就是一個(gè)Activity。

學(xué)過WEB開發(fā)的同學(xué),可以把Activity理解成網(wǎng)頁中的一個(gè)JSP文件;或者你可以把它理解成一個(gè)Windows的窗口。

下面看一下Activity類的繼承關(guān)系:

 

 從這里可以看到Activity是Context類的子類,大家對(duì)此先有個(gè)印象。

 二、理解Activity的生命周期

手機(jī)最重要也是最基礎(chǔ)的功能是打電話,也就意味著電話來的時(shí)候可能隨時(shí)要把現(xiàn)在的程序暫停,如果電量不足的時(shí)候也可能隨時(shí)要把現(xiàn)有程序關(guān)閉;因此Android程序和電腦上的程序有所不同,具體到Activity,Activity的生命周期不是自身控制的,而是由Android系統(tǒng)控制的。

在android中Activity有四種基本狀態(tài):

1、Running

位于屏幕最前端時(shí),此時(shí)處于可見狀態(tài),和用戶可交互的狀態(tài)。

2、Paused

當(dāng)Acitivy被另一個(gè)透明的或者非全屏的Activity覆蓋時(shí)的狀態(tài)叫Paused狀態(tài),雖然可見但不可交互。
3、Stop

當(dāng)Activity被另外一個(gè)Activity覆蓋、界面不可見時(shí)處于Stop狀態(tài)。

4、Killed

Activity被系統(tǒng)殺死或者跟本沒啟動(dòng)時(shí)就是Killed狀態(tài)。

我們下面看一下Activity的生命周期:

 

  下面是上圖的簡單翻譯版本:

 

Activity棧:

Android通過Activity棧的方式來管理Activity。

 正在運(yùn)行的Activity 處在在棧的最頂端,它是運(yùn)行狀態(tài)的;

當(dāng)有新Activity進(jìn)入屏幕最上端時(shí),原來的Activity就會(huì)被壓入第二層,如果他的屏幕沒有被完全遮蓋,那么他處于Pause狀態(tài),如果他被遮蓋那么他處于Stop狀態(tài)。

當(dāng)然不管你出于任何一層,都可能在系統(tǒng)覺得資源不足時(shí)被強(qiáng)行關(guān)閉,當(dāng)然關(guān)閉時(shí)在棧底的程序最先被關(guān)閉。

譬如:當(dāng)你在程序中調(diào)用 Activity.finish()方法時(shí),結(jié)果和用戶按下 BACK 鍵一樣:他告訴 Activity Manager該Activity實(shí)例可以被“回收”。隨后 Activity Manager 激活處于棧第二層的 Activity 并重新入棧,把原 Activity 壓入到棧的第二層,從 Running 狀態(tài)轉(zhuǎn)到 Paused 狀態(tài)。

三.實(shí)例:觀察翻轉(zhuǎn)屏幕導(dǎo)致的Activity狀態(tài)變化

Activity類中定義了和生命周期相關(guān)的一些方法,這些方法會(huì)在狀態(tài)改變時(shí)被調(diào)用,譬如創(chuàng)建時(shí)調(diào)用的方法onCreate()。因此我們可以寫一個(gè)程序,在程序的每個(gè)一個(gè)方法中寫注釋,然后看看運(yùn)行時(shí)注釋的打印順序來跟蹤Activity的狀態(tài)變化。

下面是程序代碼:

package android.basic.lesson4;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;public class MainActivityLife extends Activity {
String tag =”[MainActivityLife]“;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(tag, “onCreate”);
}@Override
public void onStart(){
super.onStart();
Log.i(tag, “onStart”);
}@Override
public void onPause(){
super.onPause();
Log.i(tag, “onPause”);
}@Override
public void onResume(){
super.onResume();
Log.i(tag, “onResume”);
}@Override
public void onStop(){
super.onStop();
Log.i(tag, “onStop”);
}@Override
public void onDestroy(){
super.onDestroy();
Log.i(tag, “onDestroy”);
}
}

然后調(diào)出LogCat工具,來觀察程序的運(yùn)行細(xì)節(jié)。通過LogCat的過濾器我們可以看到程序啟動(dòng)、屏幕翻轉(zhuǎn)、按后退鍵程序退出的過程,這有助于我們驗(yàn)證剛才所學(xué)的知識(shí)。

我們可以看到屏幕翻轉(zhuǎn)時(shí),Android系統(tǒng)把ActivityLife這個(gè)Activity先殺死(具體順序是先暫停、后關(guān)閉再銷毀),然后再啟動(dòng)(具體順序是先創(chuàng)建,后啟動(dòng)再恢復(fù))。通過這個(gè)例子我們也清楚的看到了,是Android系統(tǒng)而不是程序員在控制Activity的生命周期。

以上就是對(duì)Android Activity 生命周期的介紹,有需要的朋友可以參考下。

相關(guān)文章

  • 深入分析安卓(Android)中的注解

    深入分析安卓(Android)中的注解

    注解是我們經(jīng)常接觸的技術(shù),Java有注解,Android也有注解,本文將試圖介紹Android中的注解,以及ButterKnife和Otto這些基于注解的庫的一些工作原理.下面一起來看看。
    2016-08-08
  • Android開發(fā)之動(dòng)畫實(shí)現(xiàn)方法

    Android開發(fā)之動(dòng)畫實(shí)現(xiàn)方法

    這篇文章主要介紹了Android開發(fā)之動(dòng)畫實(shí)現(xiàn)方法,實(shí)例分析了Android中動(dòng)畫的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • Android shell命令行中過濾adb logcat輸出的幾種方法

    Android shell命令行中過濾adb logcat輸出的幾種方法

    本文主要介紹Android shell命令行中過濾adb logcat輸出的方法,這里整理了幾種方法,并詳細(xì)的說明,有需要的朋友可以參考下
    2016-08-08
  • Android自定義View繪制貝塞爾曲線的方法

    Android自定義View繪制貝塞爾曲線的方法

    這篇文章主要為大家詳細(xì)介紹了Android自定義View繪制貝塞爾曲線的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android自定義GestureDetector實(shí)現(xiàn)手勢ImageView

    Android自定義GestureDetector實(shí)現(xiàn)手勢ImageView

    這篇文章主要為大家詳細(xì)介紹了Android自定義GestureDetector實(shí)現(xiàn)手勢ImageView的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android橫豎屏切換實(shí)例總結(jié)

    Android橫豎屏切換實(shí)例總結(jié)

    這篇文章主要介紹了Android橫豎屏切換的相關(guān)技巧,結(jié)合實(shí)例形式總結(jié)分析了Android禁止及設(shè)置橫豎屏切換、修改切換布局及攔截切換等相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • android中AES加解密的使用方法

    android中AES加解密的使用方法

    這篇文章主要為大家詳細(xì)介紹了android中AES加解密的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android StatusBar 透明化方法(不同的版本適配)

    Android StatusBar 透明化方法(不同的版本適配)

    本篇文章主要介紹了Android StatusBar 透明化方法(不同的版本適配),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android Material加載進(jìn)度條制作代碼

    Android Material加載進(jìn)度條制作代碼

    這篇文章主要為大家詳細(xì)介紹了AndroidMaterial加載進(jìn)度條的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解Android平臺(tái)上讀寫NFC標(biāo)簽

    詳解Android平臺(tái)上讀寫NFC標(biāo)簽

    NFC,即Near Field Communication,近距離無線通訊技術(shù),是一種短距離的(通常<=4cm或更短)高頻(13.56M Hz)無線通信技術(shù),可以讓消費(fèi)者簡單直觀地交換信息、訪問內(nèi)容與服務(wù)。
    2017-01-01

最新評(píng)論