Android: закрыть активность после результата - PullRequest
0 голосов
/ 26 августа 2011

Я написал небольшое приложение Google Maps, что вызывает у меня несколько проблем.

Написанный мною LocationListener переопределяет метод onProviderDisabled для вызова Activity, где пользователь может включить свой GPS.

Это хорошо делает работу, но одна проблема все еще там.Если я закрываю Maps_Activity и после этого выключаю GPS, кажется, что слушатель уже работает, потому что активность (тот, кто говорит мне, что GPS не работает) все еще всплывает.

LocationListner следующим образом:

public class LocationUpdateHandler implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {

        mMyLocationOverlay.enableMyLocation();
        mMyLocationOverlay.runOnFirstFix(new Runnable() {

            @Override
            public void run() {
                mMapView.getController().animateTo(
                        mMyLocationOverlay.getMyLocation());
            }
        });
    }

    @Override
        public void onProviderDisabled(String provider) {
        Intent i = new Intent(MapActivity.this, NoGpsActivity.class);
        startActivity(i);
    }

    @Override
    public void onProviderEnabled(String provider) {
        Toast.makeText(getApplicationContext(), "GPS ready", Toast.LENGTH_LONG).show();
    }

}

Класс NoGPSAcctivity.c следующим образом:

public class NoGpsActivity extends Activity {

private OnClickListener mEnableGPSListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);

    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gps_not_available_overlay);

        Button mEnableGPS = (Button)findViewById(R.id.enablegps_button);

        mEnableGPS.setOnClickListener(mEnableGPSListener);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == 0){
        finish();
    }
}



 }

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 26 августа 2011

В вашем методе onDestroy () вам нужно вызвать removeUpdates (locationListener) , чтобы он прекратил получать обновления.

Также следует обратить внимание на то, что клавиша «Домой» в Android обычно означает «свернуть» (оставляя вашу программу в фоновом режиме), а клавиша «Назад» означает «закрыть».Так что, если вы попали домой, скорее всего, он все еще работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...