在后台正确处理LocationManager.requestLocationUpdates

时间:2015-06-15 18:41:10

标签: android locationmanager

我正在创建应用程序,当应用程序处于后台时,必须通过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)任何其他方法,我提到的更好,我不知道。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您的服务被终止,将会调用onDestroy或者整个过程将被终止 - 在这种情况下您不必担心它,操作系统会将您从应用列表中删除通知。所以你对#1很好。

第二个是个坏主意。没有理由在onTrimMemory中删除GPS更新,它没有使用大量的RAM。并且您希望绑定打开和关闭正在使用它的上下文的更新,而不是绑定到应用程序 - 否则您将使它们保持比需要更长的时间。

答案 1 :(得分:-1)

现在使用LocationManager已经很老了,您应该使用Google Play服务更简单有效地使用位置API&#39>

您应该check out thissample code also available here..