MapActivityとListActivityをホストしているFragmentActivityがあります。各アクティビティはLocationManagerメソッドを呼び出して、ユーザーの現在の場所を取得します。アプリがバックグラウンドで実行されているときにGPSをオフにしようとしています。
各アクティビティを個別に実行しようとしたところ、まったく問題ありません。onPause内のメソッドは機能します。GPSロゴが携帯電話の通知バーに表示されなくなりました。しかし、MapとListActivityの両方をホストするFragmentActivityを実行すると、戻るボタンを押しても、GPSロゴはまだそこにあります。
なぜそれが起こったのか分かりませんが、誰かが私に可能性は何であるか教えてもらえますか?
参考:FragmentActivity内でlocationManagerメソッドを呼び出さない。
両方のアクティビティでのonPause()メソッドとonResume()メソッドは次のとおりです。
@Override
public void onResume() {
if (locationListener != null)
{
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, locationListener);
}
super.onResume();
}
@Override
public void onPause() {
locationManager.removeUpdates(locationListener);
locationManager = null;
super.onPause();
}
更新:問題を見つけましたこれ が私のFragmentActivityです
protected void onCreate(Bundle bundle) {
WWHApplication.setFragmentInstance(this);
WWHApplication.getInstance().getJsonDBInstance();
Util.isJsonDBDownloaded();
super.onCreate(bundle);
setContentView(R.layout.main_fragment_activity_alt);
cbAll = (RadioButton) findViewById(R.id.cb_tab_all);
cbAll.setChecked(true);
cbAll.setOnClickListener(this);
cbFavorites = (RadioButton) findViewById(R.id.cb_tab_favorites);
cbFavorites.setOnClickListener(this);
cbHistorical = (RadioButton) findViewById(R.id.cb_tab_historical);
cbHistorical.setOnClickListener(this);
cbFood = (RadioButton) findViewById(R.id.cb_tab_food);
cbFood.setOnClickListener(this);
slidingDrawer = (MultiDirectionSlidingDrawer) findViewById(R.id.drawer);
//Always prepare content on start
WWHApplication.setCategory('a');
WWHApplication.getListActivityIntance().loadListView();
animate();
animateStart();
}
public void animateStart() {
slidingDrawer.animateOpen();
}
public void animate() {
slidingDrawer.refreshContent();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cb_tab_all:
WWHApplication.setCategory('a');
WWHApplication.getListActivityIntance().loadListView();
animate();
break;
case R.id.cb_tab_favorites:
WWHApplication.setCategory('f');
WWHApplication.getListActivityIntance().loadListView();
animate();
break;
case R.id.cb_tab_historical:
break;
case R.id.cb_tab_food:
break;
}
}
アクティビティ内の次のすべての行をコメントアウトすると、onPause()内のGPSoffメソッドが機能します。
WWHApplication.setCategory('a');
WWHApplication.getListActivityIntance().loadListView();
問題は、両方の回線を呼び出す必要があることです。onPause()内のGPS offメソッドがまだ機能している間に、上記のメソッドを呼び出すことができる解決策はありますか?