Android 四大組件和Intent

來源:互聯網
上載者:User

標籤:

 

一、Android有四大組件:Activity、Service、BroadcastReceiver、ContentProvider。

  1、Activity

    通過startActivity建立新的Activity,通過Intent將資訊傳遞到新從Activity中。

    如果需要傳回值,則使用startActivityForResult,並重寫onActivityResult方法。在被調用的Activity中,使用setResult將資訊傳遞迴調用處。

 

  2、Service

    使用startService、bindService、unbindService、stopService對Service進行操作。通過Intent傳遞資訊。

    這4個方法調用順序和注意事項,可以查看日誌 Android Service 和 Android Service執行unbind後再次執行bind的問題

 

  3、BroadcastReceiver

    使用sendBroadcast、registerReceiver、unregisterReceiver。

    register是android.content.ContextWrapper中的方法,而Activity和Service都繼承自ContextWrapper,所以Activity和Service都可以註冊Receiver。

    註冊Receiver的方式有兩種:可以不使用registerReceiver和unregisterReceiver,使用Manifest.xml中配置的方式註冊Receiver,這種註冊方式稱為靜態註冊,Activity聲明周期結束後,BroadcastReceiver依然可以接收到發給它的資訊;如果使用registerReceiver和unregisterReceiver,就是動態註冊,BroadcastReceiver的聲明周期跟隨Activity或Service的聲明周期。

    當這個Activity被銷毀的時候,如果沒有執行unregisterReceiver,系統會提示是否忘記取消註冊。

 

    sendOrderedBroadcast可以發送有序廣播,每個廣播在IntentFilter中設定priority屬性,通過優先順序保證Broadcast的執行順序,priority值(-1000到1000)越大優先順序越高。

 

  4、ContentProvider

    目前只是通過eoe視頻學習了調用其他組件提供資訊的使用方法。

 

二、Intent

  Intent是組件間傳遞資訊的方式。

  這段時間的學習過程中,大多數時間都在使用Intent(Context, <Class ?>)方法構造Intent對象,這種構造對象的方式可以精確的調用Activity、Service、Broadcast等組件。但是缺點也很明顯,比如,不能批量的下發Broadcast(繼承或許可以實現,需要實踐來驗證一下)。對於這樣的需求,可以通過Intent(String action)來實現,在Manifest中定義IntentFilter,多個Broadcast對應相同Action的IntentFilter,就可以實現批量發送的功能。

 

Android 四大組件和Intent

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.