Android组件之间通信
方式一: 使用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: