我正在创建应用程序,当应用程序处于后台时,必须通过GPS获取用户的位置,我使用LocationManager进行操作,但我开始想知道哪种方法更安全。
1)开始监听服务中的任何位置变化,并在onDestroy()中删除更新 - 但是从我读到的内容中,如果服务被杀死,则无法触发onDestroy()。
2)在onDestroy()(或者onTrimMemory())中创建某种类型的GPSManager类和Application类removeUpdates。 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)任何其他方法,我提到的更好,我不知道。
提前致谢
答案 0 :(得分:1)
如果您的服务被终止,将会调用onDestroy或者整个过程将被终止 - 在这种情况下您不必担心它,操作系统会将您从应用列表中删除通知。所以你对#1很好。
第二个是个坏主意。没有理由在onTrimMemory中删除GPS更新,它没有使用大量的RAM。并且您希望绑定打开和关闭正在使用它的上下文的更新,而不是绑定到应用程序 - 否则您将使它们保持比需要更长的时间。
答案 1 :(得分:-1)
现在使用LocationManager
已经很老了,您应该使用Google Play服务更简单有效地使用位置API&#39>