你了解Android中的Activity嗎?

2021-10-06 06:21:14 字數 2772 閱讀 5203

android應用中通常由乙個或者多個基本元件組成,我們平時看到的android應用中最常用的元件就是activity。activity、broadcastreceiver、contentprovider和service合稱android的四大元件。activity是android的四大元件中最直觀的乙個,可以狹義地理解為activity是與使用者互動的介面,可以處理與使用者互動的事件。簡單說就是看到的介面。常見的 activity 型別有 listactivity,fragmentactivitiy,tabacitivty 等。當然開發中可根據自己的功能設計自己的公共基類: baseactivity。

在我們建立完乙個android工程後會有以下mainactivity檢視:

}可以看到,預設實現的oncreate()方法非常簡單,就是呼叫了父類的oncreate()方法。

activity主要負責於和使用者互動,而談及與使用者互動則不得不說android中的view元件了。view元件是所有ui控制項、容器控制項的基類,可以說view元件就是android應用中使用者實實在在看到的部分。但view元件需要放到容器元件中,或者使用activity將它顯示出來。如果我們需要通過某個activity把指定的view顯示出來,呼叫activity的setcontentview()方法即可。

setcontentview()方法可接受乙個view物件作為引數,例如:

//建立乙個線性布局管理器

linearlayout layout =

newlinearlayout

(this);

//設定該activity顯示layout

setcontentview

(layout)

;

這兩行**建立了乙個linearlayout物件(它是 viewgroup的子類,viewgroup又是view的子類),接著呼叫activity的setcontentview(layout)把這個布局管理器顯示出來。

我們經常使用setcontentview()方法接受乙個布局管理器資源的id作為引數,例如:

//設定該activity顯示main.xml檔案定義的view

setcontentview

(r.layout.activity_main)

;

在初始**中我們可以看到這一行**:

setcontentview

(r.layout.activity_main)

;

這一行**主要是說明當前activity引用的是activity_main布局檔案,在android專案中新增的任何資源都會在r檔案中生成乙個相應的資源id,因此我們的activity_main.xml布局檔案的id現在應該是已經新增到r檔案中了。在**中引用布局檔案的方法你也看到了,只需要呼叫r.layout.activity_main就可以得到activity_main.xml布局的id,然後將這個值傳入setcontentview()方法即可。

注意:這裡我們使用的r是我們工程包下面的r檔案,androidsdk還會自動提供乙個android包下的r檔案,注意兩者是有區別的,別引用錯了。

官方文件中對activity的生命週期有個比較經典圖,如下圖一所示:

相信不少人已經看過這個流程圖,在此就不多做贅述,我簡單的說說這幾個過程:

1.啟動activity:系統會先呼叫oncreate方法,然後呼叫onstart方法,最後呼叫onresume,activity進入執行狀態。

2.當前activity被其他activity覆蓋其上或被鎖屏:系統會呼叫onpause方法,暫停當前activity的執行。

3.當前activity由被覆蓋狀態回到前台或解鎖屏:系統會呼叫onresume方法,再次進入執行狀態。

4.當前activity轉到新的activity介面或按home鍵回到主屏,自身退居後台:系統會先呼叫onpause方法,然後呼叫onstop方法,進入停滯狀態。

5.使用者後退回到此activity:系統會先呼叫onrestart方法,然後呼叫onstart方法,最後呼叫onresume方法,再次進入執行狀態。

6.當前activity處於被覆蓋狀態或者後台不可見狀態,即第2步和第4步,系統記憶體不足,殺死當前activity,而後使用者退回當前activity:再次呼叫oncreate方法、onstart方法、onresume方法,進入執行狀態。

7.使用者退出當前activity:系統先呼叫onpause方法,然後呼叫onstop方法,最後呼叫ondestory方法,結束當前activity。

這就是一次完整的常規activity生命週期。

從某種角度看,activity為android應用提供了視覺化使用者介面,如果該android應用需要多個使用者介面,那麼這個android應用將會包含多個activity,多個activity組成activity棧,當前活動的activity位於棧頂。

Android你需要了解的知識點

1 android四大元件 2 動畫 滑動衝突 自定義view 事件分發機制 4 android的資料儲存方式 5 ui布局 fragment的使用 6 記憶體 效能優化 的處理 螢幕適配 7 網路通訊的幾種實現 斷點續傳的實現 了解tcp ip udp http等網路協議 8 資料結構和演算法 9...

你真的了解Java中的Instanceof嗎?

instanceof 是乙個簡單的二元操作符,它是用來判斷乙個物件是否是乙個類例項的 boolean b1 sting instanceof object b1為true因為string是object的子類 boolean b2 new string instanceof string b2為tru...

你真的了解Java中的Instanceof嗎?

instanceof 是乙個簡單的二元操作符,它是用來判斷乙個物件是否是乙個類例項的 boolean b1 sting instanceof object b1為true因為string是object的子類 boolean b2 new string instanceof string b2為tru...