EventBus tool usage details
Use EventBus
compile 'org.greenrobot:eventbus:3.0.0'
/** * Created by Administrator on 2015/8/10. */ public class EventManager { public static void registEventBus(Object obj) { if (!getDefault().isRegistered(obj) && classContainsOnEventMethod(obj.getClass())) { getDefault().register(obj); } } public static void unRegistEventBus(Object obj) { if (getDefault().isRegistered(obj) && classContainsOnEventMethod(obj.getClass())) { getDefault().unregister(obj); } } public static EventBus getDefault() { return EventBus.getDefault(); } @SuppressWarnings("rawtypes") public static boolean classContainsOnEventMethod(Class clz) { Method[] ms = clz.getDeclaredMethods(); for (Method method : ms) { String methodName = method.getName(); if (methodName.startsWith("onEvent")) { return true; } } return false; } }
public class MessageEvent { private String message; public MessageEvent(String message) { this.message=message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
Send:
EventManager.getDefault().post(new MessageEvent("KnowledgeupdateSuccess"));
Accept (Fragment)
@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { ... EventBus.getDefault().register(this); return view; }
@Overridepublic void onDestroyView() { super.onDestroyView(); EventBus.getDefault().unregister(this);}
@Subscribe(threadMode = ThreadMode.MAIN)public void onEventMainThread(MessageEvent event) { String message = event.getMessage(); if (message.equals("success")){ ... }};
Accept (activity)