我写了一个小型谷歌地图应用程序,这让我有点问题。
我编写的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();
}
}
}
感谢您的帮助!
答案 0 :(得分:1)
在onDestroy()方法中,您需要致电removeUpdates(locationListener),以便停止接收更新。
另外需要注意的是,Android中的“Home”键通常表示“最小化”(将程序保留在后台),而“Back”键表示“关闭”。所以如果你回家要退出,很可能它还在运行。