我正在开发一个使用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()函数会停止。
任何人都可以帮我解决我的问题吗? 提前谢谢!
答案 0 :(得分:3)
您需要删除更新。它将在其他线程中工作 试试这个:
@Override
public void onDestroy() {
locationManager.removeUpdates(this);
super.onDestroy();
}