當前位置:首頁 » 安卓系統 » activity回調android

activity回調android

發布時間: 2025-04-15 00:38:10

Ⅰ 請簡述Android的Activity組件的生命周期方法。

在Activity的生命周期中有很多的回調方法,系統調用Activity中的這些回調方法,就像是爬一個階梯。而這些回調方法就相當於階梯的每一層。當系統創建了一個新的Activity實例,回調方法一層一層的從最低層爬到最高層,也就是Resumed()。到位於頂樓的時候,也就是這個Activity就位於用戶的前台。此時用戶就可以和Activity進行互動了。

當用戶要離開Activity的時候,系統調用右邊的回調方法,一層一層的下這個階梯,使Activity的狀態從最高層移動到最底層。在有些情況下,Activity只是完成部分的狀態遷移並且等待用戶的指令。此時Activity只是站在Paused()上或者是Stopped()的階梯上面,當得到用戶重新運行的指令時,Activity會回到左邊的階梯上。重新調用左邊相應的爬階梯回調方法,一步一步向上爬並重新回到最高層的狀態。並顯示在用戶的前台。

根據Activity復雜度的不同,你或許不用實現所有的生命周期方法。可是,理解每個生命周期回調函數的意義卻非常重要,這能確保你的應用能完全按照用戶的期望做出正確的動作。正確的實現生命周期的回調方法,才能應用正確的動作。所以作為一個合格的android程序員,理解Activity的生命周期,是非常有必要的

Ⅱ 如何管理Android中Activity的生命周期

一、基礎

1.1自己創建的activity必須要繼承類Activity(或其子類)。在activity里,為了實現activity各種狀態的切換,你必須實現指定的回調方法。以下是最為重要的兩個回調方法

onCreate():

這是必須實現的回調方法,啟動一個 activity時會首先調用此方法。因此,在onCreate()的方法體里,你應該初始化該activity必要的控制項。值得注意的是,在這里你必須調用setContentView(View view)方法去呈現用戶的界面。

onPause():

在用戶將要離開activity時調用此方法(指的是此時activity處於半透明狀態且沒有獲取用戶的焦點)。通常在這樣的狀態下,你需要處理用戶數據的提交、動畫處理等操作。

1.2銷毀activity

你可以調用finish()方法去銷毀一個activity。同樣得,你可以調用finishActivity()方法去銷毀一個你剛剛啟動的activity。

tips:

在多數情況下,你是不需要顯式地調用finish…()方法去銷毀一個activity。在將要討論到的activity生命周期里,你可以知道,Android系統會為你管理activity的生命周期,所以你並不需要顯式銷毀activity(即調用finish類方法)。顯式地調用finish類方法,會對用戶的體驗產生不利的影響,除非你確實是不希望用戶返回到此activity(界面),才去顯式調用finish類方法。

二、認識activity的生命周期

2、1

Activity的生命周期對它的任務、backstack和與此有關聯的activity有著直接的影響。因此想開發出一個健壯的有彈性的Android程序,你需要學會如何去管理activity的生命周期(即調用各種回調方法)。

activity的生命周期主要包含一些三種狀態:

(1)運行態(Resumedstate)

此時Activity程序顯示在屏幕前台,並且具有焦點,可以與用戶的操作進行交互,如向用戶提供信息、捕獲用戶單擊按鈕的事件並做處理。

(2)暫停態(PausedState)

此時Activity程序失去了焦點,並被其他處於運行態的otherActivity取代在屏幕顯示,但otherActivity程序並沒有覆蓋整個屏幕或者具有半透明的效果—此狀態即為暫停態。處於暫停態的Activity仍然對用戶可見,並且是完全存活的(此時Activity對象存留在內存里,保留著所有狀態與成員信息並保持與窗口管理器的連接)。如果系統處於內存不足的情況下,會殺死這個Activity。

(3)停止態(StoppedState)

當Activity完全被另一個otherActivity覆蓋時(此時otherActivity顯示在屏幕前台),則處於停止態。處於停滯態的Activity依然是存活的(此時Activity對象依然存留在內存里,保留著所有的狀態和與成員信息,但沒有與窗口管理器保持連接),而且它對用戶是不可見的,如果其他地方需要內存,系統會銷毀這個Activity。

處於暫停態(PausedState)或者停止態(Stopped
State)的Activity,系統可以通過調用finish()方法或者直接終止它的進程來銷毀此Activity(從內存中清楚此Activity對象)。被finish()或者銷毀的Activity再重新打開時,是需要再次初始化此Activity的。

2、2

當一個Activity從一種狀態轉到另一種狀態時,會通過調用回調方法來通知這種變化。這些回調方法都是可以重寫的,你可以根據程序的的需要來選擇重寫對應的回調方法。以下列出了Activity生命周期里的基本回調方法:

public class ExampleActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// The activity is being created.

}

@Override

protected void onStart() {

super.onStart();

// The activity is about to become visible.

}

@Override

protected void onResume() {

super.onResume();

// The activity has become visible (it is now
"resumed").

}

@Override

protected void onPause() {

super.onPause();

// Another activity is taking focus (this activity is
about to be "paused").

}

@Override

protected void onStop() {

super.onStop();

// The activity is no longer visible (it is now
"stopped")

}

@Override

protected void onDestroy() {

super.onDestroy();

// The activity is about to be destroyed.

}

}

筆記:在方法體里,必須先調用父類對應的實現方法super.Xxx(),再執行其他的操作(如上面代碼所示)。為了習慣,下面也提供一些代碼來測試一些這些方法的使用,在博客的最後面。

總的來說,這些回調方法定義了Activity整個生命周期。在生命周期里通過重寫這些回調方法,,你可以監控以下下三個嵌套的方法循環。

完整存活的時間:

Activity的完整存活的時間是自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置所有「全局」狀態以完成初始化,而在onDestroy()中釋放所有系統資源。例如,如果Activity有一個線程在後台運行從網路下載數據,它會在onCreate()創建線程,而在 onDestroy()銷毀線程。

可見狀態的時間:

Activity的可見狀態是自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許並不是位於前台或者也不與用戶進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。例如,當用戶不再看見我們顯示的內容時,我們可以在onStart()中注冊一個BroadcastReceiver來監控會影響UI的變化,而在onStop()中來注消。onStart() 和 onStop() 方法可以隨著應用程序是否為用戶可見而被多次調用。

顯示在前台的時間:

Activity的前台顯示是自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位於前台最上面並與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態轉換——例如當設備轉入休眠狀態或者有新的Activity啟動時,將調用onPause() 方法。當Activity獲得結果或者接收到新的Intent時會調用onResume() 方法。

熱點內容
演算法偽碼 發布:2025-04-16 06:55:34 瀏覽:685
cf伺服器如何加子彈 發布:2025-04-16 06:39:08 瀏覽:936
如何修改wf密碼名稱 發布:2025-04-16 06:31:06 瀏覽:199
吃雞安卓主播用什麼投屏 發布:2025-04-16 06:29:33 瀏覽:820
python元素是否存在 發布:2025-04-16 06:16:39 瀏覽:329
優酷上傳侵權視頻 發布:2025-04-16 06:15:03 瀏覽:50
現代伊蘭特7代有哪些配置 發布:2025-04-16 06:12:26 瀏覽:650
啪啪訪問視頻 發布:2025-04-16 05:57:35 瀏覽:859
電信烽火盒子設置密碼是多少 發布:2025-04-16 05:56:48 瀏覽:408
sqldatetime 發布:2025-04-16 05:51:08 瀏覽:893