Отправить сообщение и обработать его в нескольких обработчиках

Добрый день из Мексики,

У меня есть FragmentActivity с обработчиком, внутри я помещаю фрагмент с собственным обработчиком.

С другой стороны, у меня есть служба, которая подключается к сокету и отправляет сообщения через mHandler.obtainMessage(MESSAGE_SOMETHING).sendToTarget(); в качестве примера Bluetooth реализует взаимодействие между службами и действиями.

У меня вопрос: «Как я могу заставить свои FragmentActivity и Fragment обрабатывать одно и то же сообщение, которое отправляет моя служба?» Я думаю о массиве обработчиков или что-то в этом роде, но я думаю, что это лучший способ сделать это.

Извините за мой плохой английский и хорошего дня...


person Poperto Arcadio Buendía    schedule 18.07.2013    source источник


Ответы (1)


Я сделал это просто,

Сначала реализуйте список для обработчиков

LinkedList<Handler> mHandlers = new LinkedList<Handler>();
LinkedList<String> mTags = new LinkedList<String>();

Затем я делаю две функции для регистрации и удаляю обработчик из списка.

private void registerHandler(Handler h, String tag){
    mHandlers.add(h);
    mTags.add(h);
}

private void removeHandler(String tag){
    int index=10000;
    for(int i = 0; i < mTags.size(); i++){
        if(s.equals(mTags.get(i))){
            index=i;
            break;
        }
    }
    if(index != 10000){
        mTags.remove(index);
        mHandlers.remove(index);
    }
}

И для отправки сообщений n-обработчикам я меняю свою функцию на

for(Handler h:mHandlers){
    h.obtainMessage(MESSAGE_SOMETHING).sendToTarget();
}

И это все...

person Poperto Arcadio Buendía    schedule 26.07.2013