0

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メソッドがまだ機能している間に、上記のメソッドを呼び出すことができる解決策はありますか?

4

0 に答える 0