2011-08-26 8 views
0

Small Google지도 애플리케이션을 작성 했으므로 몇 가지 문제가 있습니다.Android : 결과 종료 후 결과

내가 작성한 LocationListener는 onProviderDisabled 메서드를 재정 의하여 사용자가 GPS를 켤 수있는 Activity를 호출합니다.

이 작업은 잘 수행되지만 문제는 여전히 있습니다. Maps_Activity를 종료하고 GPS를 종료 한 후에도 Listener가 이미 실행 중이므로 Activity (내게 말하는 사람, 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

onDestroy() 방법에서는 removeUpdates(locationListener)으로 전화하여 업데이트 수신을 중지해야합니다.

또한주의해야 할 또 다른 사항은 Android의 "홈"키는 일반적으로 "최소화"(백그라운드에서 프로그램 나가기)를 의미하고 "뒤로"키는 "닫기"를 의미합니다. 따라서 집을 나가기 위해 집에 가면 대부분 계속 움직일 것입니다.

+0

안녕하세요, 고마워요, 당신의 솔루션은 나를 위해 잘 작동합니다. removeUpdates (LocationListener)를 MapView의 onDestroy-Method에 넣습니다. 감사! – Chris