Android开发

Android组件之间通信

2018-07-19  本文已影响0人  悠悠我心_4a00

方式一: 使用Intent进行传值: (Activity与Activity之间)

方式二:使用Binder传值 (Activity与Service之间)

1.定义Service

在Service里定义一个继承自Binder的内部类,通过这个类,把Service的对象传给需要的Activity,这样Activity就可以调用Service里的public方法和属性

2.Activity绑定Service

就是通过IBinder的getService来得到MyService对象,再去调用其Public方法

方式三:使用Broadcast广播传值 广播通信方式

其实就是使用Broadcast的发送和接受实现通信

1、广播接收者BroadcastReceiver通过Binder机制向AMS(Activity ManagerService)进行注册;

2、广播发送者通过binder机制向AMS发送广播;

3、AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到

BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中;

4、消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。

方式四: 使用Application,SharePreference,文件存储,数据库,ContentProvider等等

就是使用Application在一个较长的生命周期中暂存一些数据,供不同的activity等去读写调用

方式五:使用接口:

就是定义一个接口,需要关注该事件的地方来实现这个接口。然后事件触发的地方来注册/取消注册这些对该事件感兴趣的控件.就是观察者模式  耦合比较严重。所以我们就需要用到更为简单的EventBus来解决组件之间的低耦合通信

方式六:EventBus: 

上一篇下一篇

猜你喜欢

热点阅读