Постоянно отправлять значения из запущенного сервиса в активность - PullRequest
0 голосов
/ 08 июня 2018

У меня есть запущенный сервис LocationService, который каждые 3 секунды получает местоположение устройства.Я хотел бы, чтобы эти значения отображались в пользовательском интерфейсе приложения.Для этого мне нужно будет передать значения обратно в Основное действие.

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

Как лучше всего это сделать?Я посмотрел в Bound Services и Local Broadcast, но не уверен, что больше всего подходит для непрерывной связи с UI.

1 Ответ

0 голосов
/ 09 июня 2018

После долгих исследований и поисков я обнаружил, что использование LocalBroadcastManager подходит для непрерывных обновлений другой активности.Реализация была также прямой.

Внутри класса Service при обновлении значения будет запущен метод updateUI():

private void updateUI(String statusValue){

        broadcastIntent.putExtra("status", statusValue);
        LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
    }

Это передает значение, которое будет выбрано основным действием

В основной активности я добавил BroadcastReceiver для сбора этих частых обновлений:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Get extra data included in the Intent
        String brStatus = intent.getStringExtra("status");

        if(brStatus != null){

            //Do something
            }
        }
    }
};

Я отмечу, что LocalBroadcastManager может предоставлять непрерывные обновления только во время выполнения действия.При нажатии onPause() получатель обновлений становится незарегистрированным.

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