Android四大組件

來源:互聯網
上載者:User

標籤:技術分享   提示   man   nbsp   入棧   載入   create   對話方塊   存在   

整理一下Android的四大組件的生命週期吧,參考書目:《第一行代碼》

Android四大組件
  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

    Activity的生命週期: 
    Android是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裡的活動的集合,這個棧也被稱為返回棧(Back Stack)。棧是一種後進先出的資料結構,在預設的情況下,每當啟用了一個新的活動,他會在返回棧中入棧,並處於棧頂的位置。而每當按下Back鍵或調用finish()方法去銷毀回一個活動時,處於棧頂的活動會出棧,這時前一個入棧的活動就會重新處於棧頂的位置。系統總是會顯示處於棧頂的活動給使用者。

展示了返回棧是如何管理活動入棧出棧的操作的: 

活動的生存期:

  • onCreate():在活動第一次被建立的時候調用,在這個方法中完成活動費初始化操作,如載入布局,綁定事件等。
  • onStart():在活動歐不可加變成不可見的時候調用。
  • onResume():在活動準備好和使用者進行互動的時候調用。此時的活動一定位於返回棧的棧頂,並且處於運行狀態。
  • onPause():這個方法在系統準備去啟動或者恢複另一個活動的時候調用。通常會在這個方法中將一些消耗GPU的資源釋放掉,以儲存一些關鍵資料。
  • onStop():這個方法在活動完全不可見的時候調用。他和onPuse()方法的區別在於,如果啟動的新活動是一個對話方塊式的活動,那麼onPause()方法會得到執行,而onStop()方法不會執行。
  • onDestroy():這個活動在被銷毀之前調用,之後活動狀態將變為銷毀狀態。
  • onRestart():這個方法在活動由停止狀態變為運行狀態之前調用,也就是活動被重新啟動了。

流程: 

Service的生命週期 
當一個項目的any where 調用了Context的startService()方法,相應的服務就會啟動起來,並回調onStartCommand()方法。如果服務未建立則onCreate()方法先於onStartCommand()方法執行。服務啟動後會一直保持運行狀態,一直到stopService() / stopSelf()方法被調用。*雖然每調用一次startService()方法,onStarCommand()就會執行一次,但實際上每個服務都只會存在一個執行個體。所以,不管調用了多少次startService()方法,都只需調用一次stopService()或stopSelf()方法服務就會停止下來了! 
In addtion,還可以調用Context的bindService()方法來擷取一個服務的持久串連,會回調服務中的onBind()方法。同理。若服務未建立,則onCreate()方法先執行。之後,調用方可擷取到onBind()方法裡返回的IBinder對象的執行個體。 
調用了startService()方法後,再去調用stopService()方法,這時服務中的onDestroy()方法就會執行,表示服務已經銷毀了。同樣的,當調用了bindService()方法後,又去調用unbindService()方法,onDestroy()方法也會執行。 
當對一個服務既調用了 startService() 方法,又調用了 bindService() 方法時,要同時調用stopService() 和 unbindService()方法才會執行。 
: 

BroadcastReceiver的生命週期: 
生命週期只有十秒左右,如果在onReceive()內超過十秒內的事情,就會報:Application No Response程式無響應的錯誤資訊,他的生命週期從回調onReceive()方法開始到該方法返回結果後結束。 
ContentProvider的生命週期: 
建立ContentProvider的步驟:

    • onCreate():初始化內容提供器時使用。通常會在這裡完成對資料庫的建立和升級等操作,返回true表示內容提供器初始化成功,返回false則表示失敗。
    • query():從內容提示器中查詢資料。使用uri參數來確定查詢那張表,projection參數用於確定查詢哪些列,selection和selectionArgs參數用於約束查詢哪些行,sortOrder參數用於對結果進行排序,查詢的結果放在Cursor對象中返回。
    • insert():更新內容提供器中已有的資料。使用URI參數來確定要添加的表,待添加的資料儲存在values參數中。
    • update():更新內容提供其中已有的資料,使用URI參數來確定更行哪一張表中的資料,新資料儲存在values參數中,selection和selectionArgs參數用於約束刪除哪些行,被刪除的行數將作為傳回值返回。
    • getType():根據傳入的內容URI來返回相應的MIME類型。

Android四大組件

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.