第一天开博客,希望自己能在这里学到很多,更希望得到大家的帮助。
首先记录一个非常好用的类库【EventBus】
地址:https://github.com/greenrobot/EventBus
Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
安卓优化的事件总线,简化了代码,在activity,fragment,threads,services等之间更好的通信。
使用四部曲(个人觉得,不管是在activity、fragment还是其他,在使用注册和移除注册的时候,配合其所在类的生命周期最好。)
四个步骤(以fragment为例):
1、初始化时注册EventBus.getDefault().register(this);
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); }
2、用完之后注销EventBus.getDefault().unregister(this);
@Override public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); }
3、不管是在任何地方,只要EventBus.getDefault().post(param)推送,
例如在IntentServcie中:
@Override protected void onHandleIntent(Intent intent) { final int operate = intent.getIntExtra(OPERATE, -1); switch (operate) {
case GETYHLB:
List<HDCategory> list_HD = handleGetYHLB(intent);
EventBus.getDefault().post(new GetYHLB(list_HD));
break;
}
其中:GetYHLB实体类中,定义public修饰符的成员变量即可:
public class GetYHLB { public List<HDCategory> list_hd; public GetYHLB(List<HDCategory> list_hd) { this.list_hd = list_hd; } }
4、在对应注册EventBus的类中通过onEventMainThread(param),onEventPostThread(param),onEventBackgroundThread(param),onEventAsync(param)就能接收并处理。(个人习惯使用onEventMainThread(param))
public void onEventMainThread(Object event) { if (event instanceof GetYHLB) { List<HDCategory> list = ((GetYHLB) event).list_hd; } }
第一次写博客,如有不适,还请指正。谢谢~