Предупреждающие фрагменты - ContentProvider, Handler или Service?

Я делаю приложение, в котором поток всегда прослушивает определенный адрес/порт UDP для пользовательского протокола обмена сообщениями. Они должны быть переданы во фрагменты, которые соответствующим образом изменяют пользовательский интерфейс. Одним из случаев является обновление позиции маркера в Maps API версии 2.
Поток, прослушивающий UDP, является устаревшим, я должен реализовать один метод интерфейса, который будет вызываться, когда приходит сообщение.

UDP ---> устаревший прослушиватель ---> метод интерфейса ---> ????? ---> Фрагменты пользовательского интерфейса

Что я должен использовать для ????? ? Я изучил:

  1. Службы. У меня сложилось впечатление, что это перевернутая концепция, поскольку фрагменты вызывают службу, и мне нужно, чтобы фрагменты вызывались только при поступлении сообщения.

  2. ContentProvider — не очень подходит для структурированных данных.

  3. Обработчик - не понял, как структурировать код для его использования, поскольку я не могу передать обработчик потоку, прослушивающему UDP, и должен учитывать метод интерфейса.

Бонусные баллы, если есть способ вызывать фрагмент только при поступлении сообщений определенного типа. Каждый фрагмент интересует только подмножество типов сообщений в протоколе.


person kotoko    schedule 28.01.2014    source источник


Ответы (1)


Альтернативное решение состоит в том, чтобы связаться с вашим фрагментом пользовательского интерфейса, получив статическую ссылку на объект и передав ему данные. Итак, в вашем фрагменте у вас есть общедоступный метод, например

public static MyFragment getInstance(){

return mFragment;
}

и тогда у вас есть метод вроде

public void updateUI(Data data){

//code to update the UI
}

Итак, в вашем методе интерфейса, когда вы получаете данные от своего устаревшего прослушивателя, вы можете просто

MyFragment myFrag = MyFragment.getInstance();


myFrag.updateUI(data);

Это довольно легко.

В противном случае я думаю, что более правильным подходом будет использование мессенджера и обработчика.

person drlobo    schedule 09.04.2014