1

我正在开发一个使用 google-play-services-lib 的 android 应用程序。这个应用程序有一个谷歌地图并使用 locationManager 来确定用户位置。接下来找到谷歌地方并跟踪他们的谷歌方向。在我的代码中,我使用

@Override
   protected void onDestroy(){
       super.onDestroy();
   }

但是 com.google.android.gms 服务不会停止(即使 wifi、3G 和 gps 关闭)并且电池会耗尽。当我看到我的设备的电池使用情况时

CPU 总使用率 2 分 3 秒

后台 CPU 使用率 2 分 3 秒

GPS 10 小时 30 分钟。

在我的代码中,唯一需要位置更新的情况是

@Override
    public void onLocationChanged(Location location) {
            mLatitude = location.getLatitude();
            mLongitude = location.getLongitude();   
            LatLng latLng = new LatLng(mLatitude, mLongitude);
            mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
            mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(12));
        } 

// Getting LocationManager object from System Service LOCATION_SERVICE
            LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

            // Creating a criteria object to retrieve provider
            Criteria criteria = new Criteria();

            // Getting the name of the best provider
            String provider = locationManager.getBestProvider(criteria, true);

            // Getting Current Location From GPS
            Location location = locationManager.getLastKnownLocation(provider);

locationManager.requestLocationUpdates(provider, 2000, 0, this);

但我认为随着 super.destroy() 的功能停止。

谁能帮我解决我的问题?提前致谢!

4

1 回答 1

3

您需要删除更新。它将在其他线程中工作试试这个:

@Override
public void onDestroy() {
    locationManager.removeUpdates(this);
    super.onDestroy();
}
于 2013-08-16T11:46:06.503 回答