Activity和fragment/service通信

与service

1.Activity调用bindService (Intent service, ServiceConnection conn, int flags)方法,得到Service对象的一个引用,这样Activity可以直接调用到Service中的方法,如果要主动通知Activity,可以利用回调方法
2.Service向Activity发送消息,可以使用广播,当然Activity要注册相应的接收器。比如Service要向多个Activity发送同样的消息的话,用这种方法就更好 

与fragment

 1.handler

  • Fragment对具体的Activity存在耦合,不利于Fragment复用
  • 不利于维护,若想删除相应的Activity,Fragment也得改动
  • 没法获取Activity的返回数据
  • handler的使用个人感觉就很不爽(不知大家是否有同感)

 2.广播

  • 用广播解决此问题有点大材小用了,个人感觉广播的意图是用在一对多,接收广播者是未知的情况
  • 广播性能肯定会差(不要和我说性能不是问题,对于手机来说性能是大问题)
  • 传播数据有限制(必须得实现序列化接口才可以)  
 3.EvnetBus
  • EventBus是用反射机制实现的,性能上会有问题
  • EventBus难于维护代码
  • 没法获取Activity的返回数据

 4.接口

这种方案应该是既能达到复用,又能达到很好的可维护性,并且性能也是杠杠的。但是唯一的一个遗憾是假如项目很大了,Activity与Fragment的数量也会增加,这时候为每对Activity与Fragment交互定义交互接口就是一个很头疼的问题( 包括为接口的命名,新定义的接口相应的Activity还得实现,相应的Fragment还得进行强制转换
 http://www.tuicool.com/articles/NvI7Bjy


你可能感兴趣的:(Activity和fragment/service通信)