与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
- EventBus是用反射机制实现的,性能上会有问题
- EventBus难于维护代码
- 没法获取Activity的返回数据
4.接口
这种方案应该是既能达到复用,又能达到很好的可维护性,并且性能也是杠杠的。但是唯一的一个遗憾是假如项目很大了,Activity与Fragment的数量也会增加,这时候为每对Activity与Fragment交互定义交互接口就是一个很头疼的问题( 包括为接口的命名,新定义的接口相应的Activity还得实现,相应的Fragment还得进行强制转换)