国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Activity生命周期詳解

2019-12-12 05:45:55
字體:
來源:轉載
供稿:網友

Activity 的生命周期。

一、理解Activity

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

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

學過WEB開發的同學,可以把Activity理解成網頁中的一個JSP文件;或者你可以把它理解成一個Windows的窗口。

下面看一下Activity類的繼承關系:

 

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

 二、理解Activity的生命周期

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

在android中Activity有四種基本狀態:

1、Running

位于屏幕最前端時,此時處于可見狀態,和用戶可交互的狀態。

2、Paused

當Acitivy被另一個透明的或者非全屏的Activity覆蓋時的狀態叫Paused狀態,雖然可見但不可交互。
3、Stop

當Activity被另外一個Activity覆蓋、界面不可見時處于Stop狀態。

4、Killed

Activity被系統殺死或者跟本沒啟動時就是Killed狀態。

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

 

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

 

Activity棧:

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

 正在運行的Activity 處在在棧的最頂端,它是運行狀態的;

當有新Activity進入屏幕最上端時,原來的Activity就會被壓入第二層,如果他的屏幕沒有被完全遮蓋,那么他處于Pause狀態,如果他被遮蓋那么他處于Stop狀態。

當然不管你出于任何一層,都可能在系統覺得資源不足時被強行關閉,當然關閉時在棧底的程序最先被關閉。

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

三.實例:觀察翻轉屏幕導致的Activity狀態變化

Activity類中定義了和生命周期相關的一些方法,這些方法會在狀態改變時被調用,譬如創建時調用的方法onCreate()。因此我們可以寫一個程序,在程序的每個一個方法中寫注釋,然后看看運行時注釋的打印順序來跟蹤Activity的狀態變化。

下面是程序代碼:

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. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.i(tag, “onCreate”);}@Overridepublic void onStart(){super.onStart();Log.i(tag, “onStart”);}@Overridepublic void onPause(){super.onPause();Log.i(tag, “onPause”);}@Overridepublic void onResume(){super.onResume();Log.i(tag, “onResume”);}@Overridepublic void onStop(){super.onStop();Log.i(tag, “onStop”);}@Overridepublic void onDestroy(){super.onDestroy();Log.i(tag, “onDestroy”);}}

然后調出LogCat工具,來觀察程序的運行細節。通過LogCat的過濾器我們可以看到程序啟動、屏幕翻轉、按后退鍵程序退出的過程,這有助于我們驗證剛才所學的知識。

我們可以看到屏幕翻轉時,Android系統把ActivityLife這個Activity先殺死(具體順序是先暫停、后關閉再銷毀),然后再啟動(具體順序是先創建,后啟動再恢復)。通過這個例子我們也清楚的看到了,是Android系統而不是程序員在控制Activity的生命周期。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 信阳市| 十堰市| 昭通市| 亚东县| 囊谦县| 婺源县| 阳曲县| 普定县| 隆尧县| 晋江市| 东乡族自治县| 额尔古纳市| 天台县| 惠来县| 西青区| 松江区| 衡阳市| 陕西省| 天长市| 漳浦县| 保德县| 苏尼特左旗| 阳新县| 澄迈县| 德钦县| 南雄市| 嘉祥县| 沁水县| 周至县| 肥东县| 富蕴县| 洛阳市| 敖汉旗| 苍溪县| 兰西县| 潜山县| 安溪县| 塔河县| 富锦市| 靖宇县| 克山县|