0

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

4

0 回答 0