1

google-play-services-lib を使用する Android アプリケーションを開発しています。このアプリには Google マップがあり、locationManager を使用してユーザーの位置を特定します。次に、Google プレイスを見つけて、それらの Google ルートを追跡します。私のコードでは、私は使用します

@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 に答える