我有一个托管 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 关闭方法仍在工作时,我仍然可以调用上面的这些方法?