Обратный вызов сервиса в Activity в Android

У меня есть резюме моего GPSTracker. Возвращает местоположение пользователя. Это работает.

public class GPSTracker extends Service implements LocationListener {


public GPSTracker(Context context) {
    this.mContext = context;
    getLocation();

}

public Location getLocation() {
    //GET LOCATION CODE
    return location;
}

Итак, я называю эту услугу в моей MainActivity, используя этот код:

gps = new GPSTracker(this, marker, googleMap, playbackService);

И он получает фактическое местоположение пользователя. Я хочу получить это место в моей деятельности. Служба должна отправить местоположение в мою деятельность. Может кто-нибудь мне помочь?

3 ответа

В зависимости от ваших требований деятельность и служба могут взаимодействовать тремя способами, используя:

1) Приемник вещания

2) Aidl - язык определения интерфейса Android

3) Мессенджер

Просто нажмите на каждый метод и посмотрите, какой из них соответствует вашим потребностям.

Вам нужно создать BroadcastReceiver в вашей деятельности (не забудьте зарегистрировать его в onResume() и отмените регистрацию в onPause()) и уведомить об этом посредством трансляции, предоставив Intent,

Смотрите документацию для BroadcastReciever (а также для LocalBroadcastManager который предназначен именно для этого сценария, где трансляция является локальной для вашего собственного приложения).

Вы также должны прочитать этот ответ, например.

Все решения, представленные здесь, являются хорошими вариантами. Если вы хотите создать интерфейс, есть еще одно креативное решение.

  1. Создайте класс SingleTone с интерфейсом в качестве члена, этот класс будет уведомлен службой, а класс SingleTone вызовет интерфейс при уведомлении.

  2. Наблюдайте за этим интерфейсом, когда захотите.

По сути, идея состоит в том, чтобы использовать класс SingleTone в качестве моста.

Другие вопросы по тегам