Как мой сервис может изменять значения переменных и текстовые поля пользовательского интерфейса моей деятельности? - PullRequest
0 голосов
/ 20 октября 2010

У меня есть приложение, которое получает / отправляет данные из / в удаленную БД в Интернете.

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

но .... Как этот сервис может изменять значения переменных и текстовые поля пользовательского интерфейса моей деятельности?

Я не могу найти информацию об этом, все учебники, которые я нахожу, относятся к простым сервисам, которые не делают что-то подобное

Может кто-нибудь объяснить мне, как это сделать, пожалуйста?

Ответы [ 2 ]

14 голосов
/ 20 октября 2010

Использование BroadcastReceiver

В своей деятельности поместите следующий код:

private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
    @Override
    public void onReceive(Context ctxt, Intent i) {
        // do stuff to the UI
    }
};

Зарегистрируйте получателя в onResume ():

registerReceiver(onBroadcast, new IntentFilter("mymessage"));

Обязательно отмените регистрацию в onPause ():

unregisterReceiver(onBroadcast);

В своем Сервисе вы можете опубликовать сообщение в Приложении, которое будет прослушано вашей деятельностью:

getApplicationContext().sendBroadcast(new Intent("mymessage"));

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

0 голосов
/ 20 октября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...