android 知識點彙總

一、activity前端

它是 android 應用程序的基本功能單元。一個Activity是一個應用程序組件,提供一個屏幕,用戶能夠用來交互爲了完成某項任務,例如撥號、拍照。Activity 自己是沒有界面的。activity類建立了一個窗口,開發人員能夠經過setContentView(View)接口把UI放到activity建立的窗口上。每個activity給予一個窗口,在上面能夠繪製用戶接口。窗口一般充滿屏幕,但也能夠小於屏幕而浮於其它窗口之上。android

一個應用程序(APK文件)一般由多個activities組成,他們一般是鬆耦合關係。一般,一個應用程序中的activity被指定爲"main"activity,當第一次啓動應用程序的時候呈現給用戶的那個activity。每個activity而後能夠啓動另外一個activity爲了完成不一樣的動做。每一次一個activity啓動,前一個activity就暫停或中止了,可是系統保留activity在一個棧上(「back stack」)。當一個新activity啓動,它被推送到棧頂,取得用戶焦點。符合簡單「後進先出」原則,因此,當用戶完成當前activity而後點擊back按鈕,它被彈出棧(而且被摧毀),而後以前的activity恢復。這些狀態轉換都是activity的生命週期的部分。網絡

要理解activity的生命週期,首先須要明白activity的四種狀態函數

1、Active/Runing (活動的/運行狀態)   最直接的表現是:它在屏幕最前端,處於棧的最頂端,此時它處於可見並可和用戶交互的激活狀態。佈局

2、Paused(暫停) 最直接的表現是:它仍然可見,但它已經失去了焦點故不可與用戶交互。例如被一個透明樣式的 Activity 覆蓋的狀態或者彈出dialog(對話框)時;此時它依然與窗口管理器保持鏈接,系統繼續維護其內部狀態,可是不能與用戶交互,不能操做;日誌

3、Stop(中止) 最直接的表現是: 處於徹底不可見的Activity,被另外一個Activity徹底覆蓋,好比從一個activity1跳轉到另一個Activity2,Activity2(可見)處於屏幕的頂端並徹底覆蓋了activity1xml

4、Killed(銷燬或結束) : 被系統殺死回收或者沒有被啓動時處於 Killed 狀態。接口

知道了activity的四種狀態,下面來理解activity的生命週期生命週期

一個應用程序與用戶交互(如打開Android新聞客戶端,瀏覽新聞)資源

首先展示的是一條一條的新聞列表 其經歷:activity的生命週期

onCreate:在這裏建立界面,作一些數據的初始化工做。例如建立指定Activity的佈局文件、數據的綁定等;

onStart: 當Activity處於可見時(即顯示在屏幕上)將調用這個函數;

onRestart:當Activity從中止狀態進入活動狀態前,將調用這個函數;

onResume:當Activity得到焦點,也就是說Activity可以與用戶交互的時候將調用這個函數,這個時刻Activity位於Activity棧的頂端

onPause:當Activity進入暫停狀態將調用這個函數,但在這個時刻咱們通常用來保存持久的數據或者釋放佔用的資源。

onStop:當Activity徹底被遮時將調用這個函數,

onDestory:當Activity在被終止前,即將進入非活動狀態前,將調用該函數,通常如下兩種狀況下會調用onDestory函數一、調用Activity的finish方法二、當Android系統資源不足的時候

 下面來自網絡

從下面的日誌日誌能夠看出區別:

1.從FirstActivity跳到SecondActivity時

FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
FirstAcvity --->onStop

如今給AndroidMainfest.xml中的SeconedActivity屬性加入android:theme="@android:style/Theme.Dialog",則SeconedActivity將以對話框形式出現,不會對FirstAcvity造成遮蓋.

  這時的狀態輸出爲:

FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume

這時FirstAcvity比徹底遮蓋時少調用了onStop方法.


如下兩種狀況下 都只會觸發onPause而不會觸發onStop

1. 一個透明的包含Dialog的Activity 出現

2. 按poweroff鎖屏

顯示一個非activity的Dialog,是不會調用onPause和onStop的,由於此Dialog屬於activity

相關文章
相關標籤/搜索