我有一个托管MapActivity和ListActivity的FragmentActivity。每个活动都调用一个LocationManager方法来获取用户的当前位置。当应用程序在后台运行时,我正试图关闭GPS。
当我尝试单独运行每个Activity时,我根本没有任何问题。 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;
}
}
当我在Activity中注释掉以下所有行时,onPause()内的GPS off方法正常工作:
WWHApplication.setCategory('a');
WWHApplication.getListActivityIntance().loadListView();
问题是我需要调用这两行,任何人都有一个解决方案,我仍然可以调用上面的那些方法,而onPause()中的GPS off方法仍在工作?