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: 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情况下的生命周期:在用户参与的情况下...
    AndroidMaster阅读 3,102评论 0 8
  • 面试必背 会舍弃、总结概括——根据我这些年面试和看面试题搜集过来的知识点汇总而来 建议根据我的写的面试应对思路中的...
    luoyangzk阅读 6,810评论 6 173
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 相遇这一城的灯火,哪一盏灯能给我光明与温暖,一世只想遇到一个人,一双臂膀,只想拥有一间房,一张床,一盏灯,只要属于...
    刘玉梅阅读 286评论 0 0
  • 《一千零一夜》的故事 《一千零一夜》是古代阿拉伯民间故事集,里面的故事早在1200多年前,...
    致远作文阅读 228评论 0 1