Android組件之間通信

方式一: 使用Intent進(jìn)行傳值: (Activity與Activity之間)

方式二:使用Binder傳值 (Activity與Service之間)

1.定義Service

在Service里定義一個繼承自Binder的內(nèi)部類,通過這個類,把Service的對象傳給需要的Activity,這樣Activity就可以調(diào)用Service里的public方法和屬性

2.Activity綁定Service

就是通過IBinder的getService來得到MyService對象,再去調(diào)用其Public方法

方式三:使用Broadcast廣播傳值 廣播通信方式

其實(shí)就是使用Broadcast的發(fā)送和接受實(shí)現(xiàn)通信

1、廣播接收者BroadcastReceiver通過Binder機(jī)制向AMS(Activity ManagerService)進(jìn)行注冊;

2、廣播發(fā)送者通過binder機(jī)制向AMS發(fā)送廣播;

3、AMS查找符合相應(yīng)條件(IntentFilter/Permission等)的BroadcastReceiver,將廣播發(fā)送到

BroadcastReceiver(一般情況下是Activity)相應(yīng)的消息循環(huán)隊(duì)列中;

4、消息循環(huán)執(zhí)行拿到此廣播,回調(diào)BroadcastReceiver中的onReceive()方法。

方式四: 使用Application,SharePreference,文件存儲,數(shù)據(jù)庫,ContentProvider等等

就是使用Application在一個較長的生命周期中暫存一些數(shù)據(jù),供不同的activity等去讀寫調(diào)用

方式五:使用接口:

就是定義一個接口,需要關(guān)注該事件的地方來實(shí)現(xiàn)這個接口。然后事件觸發(fā)的地方來注冊/取消注冊這些對該事件感興趣的控件.就是觀察者模式? 耦合比較嚴(yán)重。所以我們就需要用到更為簡單的EventBus來解決組件之間的低耦合通信

方式六:EventBus:?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情況下的生命周期:在用戶參與的情況下...
    AndroidMaster閱讀 3,273評論 0 8
  • 面試必背 會舍棄、總結(jié)概括——根據(jù)我這些年面試和看面試題搜集過來的知識點(diǎn)匯總而來 建議根據(jù)我的寫的面試應(yīng)對思路中的...
    luoyangzk閱讀 7,165評論 6 173
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,983評論 25 709
  • 相遇這一城的燈火,哪一盞燈能給我光明與溫暖,一世只想遇到一個人,一雙臂膀,只想擁有一間房,一張床,一盞燈,只要屬于...
    劉玉梅閱讀 316評論 0 0
  • 《一千零一夜》的故事 《一千零一夜》是古代阿拉伯民間故事集,里面的故事早在1200多年前,...
    致遠(yuǎn)作文閱讀 275評論 0 1

友情鏈接更多精彩內(nèi)容