Можно ли вызывать один сервис из разных действий через AsyncTask? - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть Service загрузка данных каждую секунду с веб-сервера (Этот Service запускается с моего основного Activity).В моем приложении есть другие Activity, каждый из которых должен обновить свой пользовательский интерфейс в соответствии с данными, загруженными Service.

. Моя идея состоит в том, чтобы дать каждому из Activity s AsyncTask, который будет извлекать небольшой объем данных из Service каждую секунду.Затем AsyncTask сообщит пользовательскому интерфейсу об обновлении.

До вчерашнего дня я все делал через AsyncTask, но сегодня утром я прочитал о стекаповороте, который извлекает данные и передает их нескольким Activity с.больше, чем Service работа, чем AsyncTask.

Так что я придумала это решение (не очень хорошее, даже немного битое), потому что я не могу найти, как уведомитьmy Activity s, когда данные извлекаются Service.Я читал о приемнике, слушателе, намерении ... но не могу понять, как я могу периодически заставлять моих Activity подписываться на эту услугу.

Спасибо за вашу помощь.

PS: смешно ли пример кода для каждого из моих ключевых слов в моем письме таким образом :)?

PS2: вариант использования моего приложения - получение температуры, давления и т. Д. Из веб-служб иМониторинг каждой из этих величин в разных действиях (я не могу контролировать их все в одной и той же деятельности).

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Данные могут обновляться по активности из службы через обработчик.

  1. В сервисе вы можете создать метод получения и установки обработчика.
  2. Установите обработчик действия при запуске вашего действия, чтобы у службы был обработчик действия, видимый в данный момент.
  3. Используйте этот экземпляр обработчика для уведомления о данных для действия.

Перейдите по этой ссылке для обработчика.

0 голосов
/ 09 ноября 2011

Итак, вот как я добиваюсь того, чего хочу (Спасибо Vineet Shukla ):

В упражнении «ServiceConsumerActivity» добавьте:

public static RefreshHandler mRefreshHandler;

class RefreshHandler extends Handler
{  
    @Override  
    public void handleMessage(Message msg)
    {  
        showServiceData(); //from which I call a method of the Service for getting the fetching value 
    }  
};

В Сервис добавьте:

Message mMessage = new Message();
ServiceConsumerActivity.mRefreshHandler.sendMessage(mMessage);
...