私のアプリでは、2つの異なるアクティビティに2つのロケーションマネージャーを使用しています。最初のロケーションマネージャは、最初のアクティビティが作成されるときに作成されます。次に、最初のアクティビティから、2番目のロケーションマネージャーを作成する2番目のアクティビティを作成しています。2番目のアクティビティでは、戻るボタンが押されたときに次のコードを使用してロケーションマネージャーの更新を停止しようとしています。
@Override
public void onBackPressed() {
lm.removeUpdates(ll);
ll = null;
lm = null;
finish();
}
llとlmは、最初と2番目のアクティビティの両方で別々にグローバルに宣言されます。llとlmは、次のコードを使用して2番目のアクティビティのonCreateで初期化されます。
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
問題は、2番目のアクティビティに移動せずに、最初のアクティビティの位置情報の更新を停止すると、AndroidのGPSサインが消えることです。しかし、2番目のアクティビティに移動し、戻るボタンを使用して最初のアクティビティに戻り、最初のアクティビティの位置の更新を停止すると、GPS位置標識はまだそこにあります。同じコード行を使用して、最初のアクティビティで更新を停止しています。
lm.removeUpdates(ll);
ll = null;
lm = null;
最初のアクティビティのllとlmは、スタートボタンが押されたときに初期化されます。
public void startClick (View target){
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
}
コードに何らかの間違いがありますか、それとも論理的なエラーがありますか?前もって感謝します。