1、使用java的观察者模式来自定义一个EvbentBus(可以订阅,发布事件消息)。
2、可以我们在一个服务中发布事件消息,不同的activity可以订阅事件消息,我们发布的事件还可以携带bundle和intent
3、代码演示
package com.jiayu.utils;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.ReentrantLock;
public class EventBus {
private static final String TAG = "EventBus";
// 子线程
public static final int THREAD_SUB = 0;
// 当前线程
public static final int THREAD_CURRENT = 1;
// 主线程
public static final int THREAD_MAIN = 2;
private static final int POOL_SIZE = 1;
private static final ReentrantLock lock = new ReentrantLock();
private static final HashMap<String, EventBus> BUS = new HashMap<String, EventBus>();
private static ExecutorService EXECUTOR = null;
// 每个action对应的EventBus维护一个自己的handler
// list,不断的取handler里面的callback执行就可以达到事件发布的功能
private ArrayList<MyCallbackHandler> handlers = new ArrayList<MyCallbackHandler>();
private EventBus() {
}
// 事件回调
public interface ICallback {
void onEvent(Event bevbent);
}
// 事件
public static class Event<T extends Object> {
private String action;
private Bundle bundle;