Android:结果后关闭活动

时间:2011-08-26 11:57:52

标签: android google-maps android-intent locationlistener

我写了一个小型谷歌地图应用程序,这让我有点问题。

我编写的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();
    }

}

NoGPSAcivity.class如下:

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 个答案:

答案 0 :(得分:1)

onDestroy()方法中,您需要致电removeUpdates(locationListener),以便停止接收更新。

另外需要注意的是,Android中的“Home”键通常表示“最小化”(将程序保留在后台),而“Back”键表示“关闭”。所以如果你回家要退出,很可能它还在运行。

相关问题