方式一: 使用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:?