0

ユーザーの現在地を必要とするAndroidアプリケーションを作成しています。次のコードを使用して、ネットワークとGPSの両方から位置情報の更新を登録します(locationManagerはすでに定義されています)。

    // Register the listener with the Location Manager to receive location updates.
    locationManager.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER,
            getResources().getInteger(R.integer.gps_min_time),
            getResources().getInteger(R.integer.gps_min_dist), this);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            getResources().getInteger(R.integer.gps_min_time),
            getResources().getInteger(R.integer.gps_min_dist), this);

私は現在このコードをに持っていますがonCreate、電力を節約するために、両方のリスナーを削除し、onPause両方をに再度追加しますonResume

アプリケーションが起動すると、両方のリスナーが2回追加されます。1回はに、もう1回はに追加onCreateされonResumeます。これについて2つの質問があります:

  1. 各リスナーを2回追加するということは、実際に2回追加されることを意味しますか、それとも2回目の呼び出しは効果がありませんか?
  2. を削除してそのままにする必要がありますか、それともすべてのリスナーを最初に削除してrequestLocationUpdateから再度追加する必要がありますか?onCreateonResumeonResume
4

2 に答える 2

1

に追加するだけonResume()です。でマネージャを作成し、とonCreate()でリスナーを追加および削除します。onResume()onPause()

私はあなたの最初の質問に対する答えを持っていません。

于 2012-05-29T08:58:02.117 に答える
1
  1. リスナーはハッシュマップのキーとして追加されます。thisしたがって、(Your Activity)を挿入してオーバーライドしない場合は、オーバーライドequalsする必要があり、同じリスナーであるため、効果はありません。

  2. とにかく、onCreate内のレジスターを削除し、onResume内に残しておくと、少なくともリスナーとメソッド呼び出しをハッシュする時間を節約できます。

于 2012-05-29T09:04:39.653 に答える