2015-06-15 3 views
0

Я создаю приложение, которое должно получить местоположение пользователя через GPS, когда приложение находится в фоновом режиме, и я делаю это с помощью LocationManager, но я начал задаваться вопросом, какой метод будет безопаснее.Правильное обращение LocationManager.requestLocationUpdates in background

1) Начать прослушивание любых изменений местоположения в службах и удалятьUpdates в onDestroy() - но из того, что я прочитал, если service'll будет убит, то onDestroy() не может быть запущен.

2) Создайте какой-то класс GPSManager и в классе приложения removeUpdates на onDestroy() (или, возможно, на onTrimMemory()). GPSManager будет выглядеть примерно так: класс GPSManager общественности {

Context mContext; 

LocationManager mLocationManager; 

public GPSManager(Context context){ 
} 

public void startGPSService(){ 
} 

public void stopGPSService(){ 
} 

LocationListener listener = new LocationListener() { 
    @Override 
    public void onLocationChanged(Location location) { 
    } 

    @Override 
    public void onStatusChanged(String s, int i, Bundle bundle) { 

    } 

    @Override 
    public void onProviderEnabled(String s) { 

    } 

    @Override 
    public void onProviderDisabled(String s) { 

    } 
}; 

}

3) Любой другой метод, лучше, что я говорил, что я не знаю.

Заранее спасибо

ответ

1

Если ваш сервис убитые, либо OnDestroy будет называться или весь процесс будет killed- в этом случае вам не нужно беспокоиться об этом, операционная система удалит вас из списка приложений для уведомления. Таким образом, вы хорошо справляетесь с №1.

Вторая - плохая идея. Нет причин для удаления обновлений GPS в onTrimMemory, он не использует много оперативной памяти. И вы хотите связать включение и выключение обновлений в контекст, который использует его, а не приложение, иначе вы будете держать их на дольше, чем необходимо.

-1

Использование LocationManager довольно стара, вы должны использовать более простой и эффективный способ использования Google Play услуги Расположение API,

Вы должны check out this, есть sample code also available here..

+0

Я устал Местоположение API, но есть проблемы с ним, когда я был в автономном режиме, но я даю ему второе изменение, возможно, я допустил некоторую ошибку. –

+0

Не все устройства имеют Службы Google Play. –