내 앱에서 두 가지 다른 활동을 위해 두 개의 위치 관리자를 사용하고 있습니다. 첫 x 째 활동이 작성 될 때 첫 x 째 위치 관리자가 작성됩니다. 그리고 첫 번째 활동에서 두 번째 활동을 만들어 두 번째 위치 관리자를 만듭니다. 두 번째 활동에서, 나는 다시 버튼을 누르면 다음과 같은 코드를 사용하여 위치 관리자 업데이트를 중지하려고 :Location Manager를 null로 설정 한 이유는 무엇입니까?
@Override
public void onBackPressed() {
lm.removeUpdates(ll);
ll = null;
lm = null;
finish();
}
LL 및 LM이 각각 따로 둘 다 제 1 및 제 2 활동에 전 세계적으로 선언됩니다. LL 및 LM은 다음과 같은 코드를 사용하여 두 번째 활동에서 onCreate에서 초기화됩니다
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
문제는 그 나는 두 번째 활동으로 이동의 첫 번째 활동의 위치 업데이트 후 GPS 기호를 중지하지 않을 경우 내 Android가 사라집니다. 하지만 두 번째 활동으로 돌아가서 뒤로 버튼을 사용하여 첫 번째 활동으로 돌아온 다음 첫 번째 활동의 위치 업데이트를 중지하면 GPS 위치 신호가 계속 표시됩니다. 시작 버튼을 누르면 초기화됩니다
lm.removeUpdates(ll);
ll = null;
lm = null;
LL 먼저 활동에 임 :
public void startClick (View target){
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
}
실수 어떤 종류의에 거기에 내가 같은 코드의 라인을 사용하여 첫 번째 활동에 업데이트를 중지하고 코드 또는 논리 오류가 있습니까? 미리 감사드립니다.
더 많은 코드를 표시하십시오. 'll'과'lm'은 어떻게 정의되어 있습니까? 그들은 어떻게 초기화됩니까? –
이 (가) 내 질문을 편집했습니다. 보세요. 혼란스러운 점이 있으면 알려주세요. – Piscean
onBackPressed가 아닌 onPause에서 업데이트를 중지하는 것이 좋습니다. 사용자가 앱의 홈 키를 누르면 포 그라운드에 있지 않아도 업데이트가 계속 수신됩니다 ... – barry