GPS无法在FragmentActivity的onPause()内部关闭

时间:2012-05-25 08:53:24

标签: android gps

我有一个托管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方法仍在工作?

0 个答案:

没有答案