Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:结果后关闭活动_Android_Google Maps_Android Intent_Locationlistener - Fatal编程技术网

Android:结果后关闭活动

Android:结果后关闭活动,android,google-maps,android-intent,locationlistener,Android,Google Maps,Android Intent,Locationlistener,我写了一个小的谷歌地图应用程序,这让我遇到了一些问题 我编写的LocationListener重写onProviderDisabled方法来调用活动,用户可以在其中打开GPS 这项工作做得很好,但还有一个问题。如果我关闭Maps_活动,然后关闭GPS,似乎听者已经在运行了,因为活动(说我GPS没有运行的人)仍然会弹出 LocationListner如下所示: public class NoGpsActivity extends Activity { private OnClickListene

我写了一个小的谷歌地图应用程序,这让我遇到了一些问题

我编写的LocationListener重写onProviderDisabled方法来调用活动,用户可以在其中打开GPS

这项工作做得很好,但还有一个问题。如果我关闭Maps_活动,然后关闭GPS,似乎听者已经在运行了,因为活动(说我GPS没有运行的人)仍然会弹出

LocationListner如下所示:

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();
    }
}



 }
公共类LocationUpdateHandler实现LocationListener{
@凌驾
已更改位置上的公共无效(位置){
mMyLocationOverlay.enableMyloLocation();
mMyLocationOverlay.runOnFirstFix(新的Runnable()文件){
@凌驾
公开募捐{
mMapView.getController().animateTo(
mMyLocationOverlay.getMyLocation());
}
});
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
意图i=新意图(MapActivity.this、nogpActivity.class);
星触觉(i);
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
Toast.makeText(getApplicationContext(),“GPS就绪”,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();
    }
}



 }
谢谢你的帮助

在您的方法中,您需要调用,以便它停止接收更新


另一个需要注意的是,Android中的“Home”键通常表示“最小化”(将程序留在后台),而“Back”键表示“关闭”。因此,如果您点击home退出,很可能它仍在运行。

嗨,杰克,非常感谢,您的解决方案对我来说很好。我将removeUpdates(LocationListener)放入MapView的onDestroy方法中。谢谢