即使我的Android应用程序销毁,com.google.android.gms也会耗尽电量

时间:2013-08-16 11:40:37

标签: android google-maps gps locationmanager batterylevel

我正在开发一个使用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()函数会停止。

任何人都可以帮我解决我的问题吗? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

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

@Override
public void onDestroy() {
    locationManager.removeUpdates(this);
    super.onDestroy();
}