현재 위치를 얻고 그 후에 다음 코드를 수행해야합니다. 이 방법이 끝나면 어떻게 기다릴 수 있습니까? onLocationChanged가 자동으로 호출되어 문제가 발생하는 이유는 무엇입니까? 누군가가 그것을 어떻게 더 정확하게 할 수있는 아이디어가 있습니까? 나는 매우 어리 석다. OnLocationChanged()
에 나는 onResume()
라고 부른다. 그러나 그것은 매우 나쁜 생각이다.대기 onLocationChanged (위치 위치)
답변
AsyncTask
을 사용하는 것이 좋습니다. 대답은 Android find GPS location once, show loading dialog을 참조하십시오. 기본적으로 onPreExecute
에서 대화 상자를 시작할 수 있습니다 (doInBackground
이 호출되기 전에 시작됩니다). 그것은 당신이 위치 할 수 있고 대화를 보여주는 시간까지 기다리는 것을 의미합니다. 그러면 doInBackground
에서 위치를 얻을 수 있습니다. 끝나면 onPostExecute
이 호출됩니다. 당신은 안으로 들어올 수있다 onPostExecute
. 위치가 null이 아닌지 확인한 다음 원하는 경우 onPostExecute
내부에서 다른 함수를 호출 할 수 있습니다.
이것은 편도 일 수 있습니다. AsyncTask Android example에서 기본 예제를 배울 수 있습니다. 또한 설명서 here을 읽고 How to Get GPS Location Using AsyncTask?을 읽어보십시오.
일부 다른 유사한 유용한 질문 :이 도움이
Wait for current location - GPS - Android Dev
getting location instantly in android
희망.
AsyncTask를 배워야한다고 생각하지만 지금은 더 간단한 해결책은 무엇입니까? –
언젠가는 당신이 도움이 될 것이라고 생각합니다. 그것은 곧장 앞으로입니다. 기본 함수 doInBackground, onPreExecute 및 onPostExecute로 시작하려고 할 수 있습니다. onPreExecute는 백그라운드 프로세스를 시작하기 직전에 호출됩니다. doInBackground 내부의 것들은 백그라운드 스레드에서 실행됩니다. onPostExecute는 백그라운드 프로세스 후에 실행됩니다. –
Ok, but 1. onLocationChange() 스레드가 실행중인 위치와 시작 위치. 2이 메소드가 시스템에서 호출하는 경우 백그라운드에서 onLocationChange()를 어떻게 수행 할 수 있습니까? –
나는 OP가 위의 대답을 받아 들였지만 나는 OP가 더 간단한 대답을 원한다고 느꼈다.
나는 OP에 Activity가있는 안드로이드 응용 프로그램이 있다고 가정합니다. 나는 이렇게 선언했다.
public class HelloAndroidActivity extends Activity implements LocationListener {
OP는 수명주기 방법의 작동 방식과 작업을 혼동했다. 내 이력서 및 일시 정지 방법은 다음과 같을 것이다 : 내 onResume 위치 업데이트와 onPause 방법이 있습니다 때 통지 할 것을 요청
@Override
protected void onPause() {
((LocationManager)getSystemService(Context.LOCATION_SERVICE)).removeUpdates(this);
super.onPause();
}
@Override
protected void onResume() {
((LocationManager)getSystemService(Context.LOCATION_SERVICE)).requestLocationUpdates(LocationManager.GPS_PROVIDER, 5 * 1000, 1, this);
super.onResume();
}
공지 사항 난 더 이상 통지되지 않을 것을 요구한다. 필요한 시간보다 작은 시간 간격으로 업데이트를 요청하지 않도록 조심해야합니다. 그렇지 않으면 배터리가 소모됩니다. 활동이 LocationListener를 구현하기
내 onLocationChanged 방법은 다음과 같습니다
이@Override
public void onLocationChanged(Location location) {
// Update the location fields
((EditText)findViewById(R.id.latField)).setText(Double.toString(location.getLatitude()));
((EditText)findViewById(R.id.longField)).setText(Double.toString(location.getLongitude()));
}
이 단순히 새로운 위치를 받아 내 활동에있는 일부 텍스트의 EditText 필드를 업데이트합니다.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
그래서 위치 관리자 및 위치 서비스를 사용하여 시작하는 방법을 묻는다면 이것은 내가 시작하는 것이 방법이 될 것입니다 : 내가 할 필요가있는 유일한 다른 것은 내 매니페스트에 GPS 권한을 추가하는 것이 었습니다. 나는 받아 들인 대답에서 무엇이든 벗어나려는 것이 아니며, onResume과 onLocationMethodChanged 메소드에서 무엇을해야하는지에 대한 근본적인 오해가 있다고 생각합니다.
- 1. Android 위치 정보 onLocationChanged
- 2. 안드로이드 위치 관리자 - 대기 위치
- 3. Android GPS 위치 - 이동하지 않습니다 onLocationChanged
- 4. 각도 수신 대기 위치
- 5. 위치 변경시 Android 위치 업데이트
- 6. Android : 현재 위치 가져 오기 후 onLocationChanged() 사용 중지
- 7. onLocationChanged (Location location) 메소드에서 위치 이름 가져 오기
- 8. 위치 클라이언트와 위치 요청을 사용하여 GPS로만 위치 업데이트 받기
- 9. Android 위치 : 첫 번째 위치 얻기
- 10. 위치 정보 API 위치
- 11. Android : 위치 업데이트 수신 대기 계속
- 12. 정확한 Google 위치 퓨즈 위치 API를 원하십니까?
- 13. 처음으로 위치 업데이트를 중지합니다.
- 14. Android에서 onLocationChanged() 함수 호출
- 15. AndEngine 위치
- 16. 위치 DataGridViewComboBoxColumn의 위치
- 17. JTextField 영구 위치/위치?
- 18. 위치 마우스 위치
- 19. 시작 위치 ... 위치 인식?
- 20. NSTextView의 위치 화면에서의 위치
- 21. 위치 안드로이드에서
- 22. 위치
- 23. 위치
- 24. 위치
- 25. 위치
- 26. 위치
- 27. 위치
- 28. 위치
- 29. 위치
- 30. 위치
onResume을 호출하면 안됩니다. 위치가 바뀌면 어떻게되고 싶습니까? – ditkin
거기에서 좌표를 가져와 onResume()에서 작업해야합니다. –