2011-08-26 98 views
0

我写了一个小的Google Maps应用程序,这让我产生了一些问题。Android:结果后关闭活动

我写的LocationListener覆盖了onProviderDisabled方法来调用一个Activity,用户可以在其中切换其GPS。

这样做很好,但一个问题仍然存在。如果我关闭了Maps_Activity,然后关闭了GPS,看起来Listener已经在运行,因为活动(说我的人,GPS没有运行)仍然弹出。作为跟随

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:

为随后的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(); 
    } 
} 



} 

谢谢您的帮助!

回答

1

在您的onDestroy()方法中,您需要拨打removeUpdates(locationListener),以便它将停止接收更新。

还有一点需要注意的是,Android中的“Home”键一般意味着“最小化”(将程序留在后台),而“后退”键意味着“关闭”。所以,如果你打回家,很可能它仍然在运行。

+0

嗨杰克,非常感谢,您的解决方案适合我。我把removeUpdates(LocationListener)放到我的MapView的onDestroy-Method中。谢谢! – Chris