Так что я планирую создать приложение, которое должно получить местоположение пользователя, и у него будет класс с именем LocationController
, который реализует интерфейс LocationListener
.
Чего я хочу добиться, так это того, чтобы как только было запущено основное действие (на данный момент называется MainActivity
) (в его методе onCreate
), чтобы вызвать мой объект LocationController
и запустить егополучение исправлений и обновлений местоположения.
Однако мне также необходимо реализовать IntentService или Service, которые будут продолжать работать даже после завершения основного действия (т. е. с именами onPause
и или onStop
) и этой службы.необходимо получить доступ к тому же объекту LocationController
, который было запущено основным действием в методе onCreate
, чтобы получить некоторые показания местоположения.
Теперь я потратил некоторое время на изучение того, как передавать данные издеятельность службы и просмотрели объекты Serializable
, Bundle
и Parcel
, и ни один из них не может передать объекты LocationListener
или Location
, так что для меня это не большая возможность (если я что-то пропустил, в которойслучай, я открыт для предложений).
Другой вариант, о котором я подумал, был, возможно, со статическими объектами.По сути, LocationController
должен быть статическим классом, чтобы MainActivity
мог вызывать его методы, чтобы начать получать исправления местоположения, но так, чтобы он также продолжал существовать даже после завершения MainActivity
.Тем не менее, я все еще не знаю, как это сделать.Например, я делаю весь LocationController
статическим объектом или некоторые его методы статическими?
Может кто-нибудь помочь мне с этим?
ОБНОВЛЕНИЕ :
Итак, я принял совет Кабуко и написал следующее по основному классу деятельности:
public void setLocationController() {
if (locationController == null)
this.locationController = new LocationController(this);
}
и
public static LocationController getLocationController() {
// make sure to have called setLocationController() early in your
// activity's life. onCreate is a good place
return this.locationController;
}
, которые устанавливаютa создает Singleton, но для доступа к контроллеру местоположения в моем классе IntentService (назовите его MyService
) я получил доступ к контроллеру местоположения как статический член основного класса активности, например:
public class MyService extends IntentService {
private LocationController locationController = null;
public MyService() {
super("MyService");
locationController = MainActivity.getLocationController();
...
}
....
} // end of class