android event framework
使用方法
- 定义自己的Application,初始化生成器
public class EventApplication extends Application {
public void onCreate() {
super.onCreate();
Builder builder = new Builder().taskExecutor(3).singleExecutor();
EventEmitterConfiguration eventEmitterConfiguration = new EventEmitterConfiguration(builder);
generator.initEventEmitter(eventEmitterConfiguration);
}
}
2.在自己的Activity中定义和注册事件
protected void onCreate(Bundle savedInstanceState) {
eventEmitter = EventEmitterGenerator.getInstance().generateEmitter();
EventCallback errorCallback = new EventCallback() {
public void callback(Object object) {
Object[] ll = (Object[]) object;
String result = (String) ll[1];
resultView.setText(result);
}
);
//如果是单纯的后台任务,可以不设置callback
Event errorEvent = Event.createInstance().setNextHandler(new ErrorEventHandler()).setEventCallback(errorCallback);
//注册事件
eventEmitter.regEvent(HandlerContants.ALLOT_EVENT_HANDLER, event);
eventEmitter.regEvent(HandlerContants.ERROR_EVENT_HANDLER, errorEvent);
}
3.触发事件
eventEmitter.fireEvent(HandlerContants.ALLOT_EVENT_HANDLER, new Object[] { host, userAgent });
4.你也可以在自己的handle中调用别的事件(当然这个事件需要先注册)
public class AllotEventHandler implements EventHandler {
...
@Override
public void handler(EventContext eventContext,Object[] args) {
...
HttpSocketRequest request = new HttpSocketRequest(HOST, PORT, sb.toString());
String response = request.sendRequest();
if (response == null) {
eventContext.invokeError(200, "获取allot失败"); }
eventContext.invokeNext(response); }
}