안드로이드 개발 질문/답변
(글 수 45,052)
onLocationChanged()가
onCreate가 실행되고 그다음에 실행이 되는것 같습니다.
system.out.println()으로 확인해보니 onCreate -> onLocationChanged() 순서로 실행이 되더라구요 ;
문제는 제가 어플에 리프레쉬 기능을 넣었는데
단순히 리프레쉬 버튼을 누르면 인텐트로 그 액티비티를 재실행하는 겁니다.
그런데 위치의 변화가 없이 재자리에서 리프레쉬를 해버리면
그냥 onCreate만 실행이 되고 onLocationChanged()가 실행이 되지 않아요;;
onLocationChanged()에 쓰레드 메소르를 넣어놔서 어플을 실행시키면 변화된 위도,경도를읽어서
쓰레드가 동작하는 식인데
onCreate만 동작을 해버려서 그냥 배경화면만 덩그러니 나오는 상태가 되어 버렸습니다.
onLocationChanged()를 onCreate보다 먼저 실행시킬수 있는 방법이 있을까요??
onCreate가 실행되고 그다음에 실행이 되는것 같습니다.
system.out.println()으로 확인해보니 onCreate -> onLocationChanged() 순서로 실행이 되더라구요 ;
문제는 제가 어플에 리프레쉬 기능을 넣었는데
단순히 리프레쉬 버튼을 누르면 인텐트로 그 액티비티를 재실행하는 겁니다.
그런데 위치의 변화가 없이 재자리에서 리프레쉬를 해버리면
그냥 onCreate만 실행이 되고 onLocationChanged()가 실행이 되지 않아요;;
onLocationChanged()에 쓰레드 메소르를 넣어놔서 어플을 실행시키면 변화된 위도,경도를읽어서
쓰레드가 동작하는 식인데
onCreate만 동작을 해버려서 그냥 배경화면만 덩그러니 나오는 상태가 되어 버렸습니다.
onLocationChanged()를 onCreate보다 먼저 실행시킬수 있는 방법이 있을까요??
2011.02.14 11:48:30
onLocationChanged() 는 OnCreate() 이후에 항상 실행 되는 것이 아니라 위치값을 새로 얻었을때 호출 되는 함수 입니다..
2011.02.14 12:43:59
위치값을 새로 얻게 되었을때
onLocationChanged()가 onCreate보다 먼저 실행되는것인가요?
double lat;
double lon;
onCreate(){
main() ---------> 메인쓰레드
}
onLocationChanged(Location loc){
lat = loc.getLatitude();
lon = loc.getLongitude();
}
제가 lat와 lon을 이용해 쿼리문으로 main()에서 xml을 받는데요
main은 아무것도 오버레이 되지가 않습니다.
그리고 마지막에 onLocationChanged에서 받은 위도 경도한개만 맵뷰에 찍히는 상황입니다.
onLocationChanged()가 main보다 먼저 실행되어야 위도 , 경도로 쿼리문을 날릴텐데
그렇지가 않아서요.. onLocationChanged()가 아니 그냥 myLocation(Location loc)로 하니 0,0 이잡혀버리고...
onCreate가 실행될때 위도경도를 바로 받아오고 싶은데.. 위치 변확 있다하더라도 onCreate끝나고 onLocationChanged가 실행이되는게 지금 문제에요 ㅠ.ㅠ
2011.02.14 12:55:31
main()이 무언진 자세히 모르겠지만....
그 순서대로 하고 싶으시다면....main()을 onLocationChanged 에서 좌표 받아온 후 실행하도록 하면 되는 것 아닌가요....?
그 순서대로 하고 싶으시다면....main()을 onLocationChanged 에서 좌표 받아온 후 실행하도록 하면 되는 것 아닌가요....?
2011.02.14 13:12:43
네..그래서 그렇게 했습니다.
그런데 리프레시 기능을 넣으려고 하는데
onLocationChanged(){
lat = loc.getLatitude();
lon = loc.getLongitude();
main();
}
이렇게 작성하였는데 움직이지 않고 리프레시 해버리면 좌표의 변화가 없어서 인지 oncreat만 실행이되고 onLocationChanged가 실행이 되지 않아요;; 그러니 main()도 실행이 되지 않아 배경화면만 나오고 있는것 같습니다.
onCreate()에서 바로 위도경도를 받고 싶은데 그게 잘 안되는군요 ㅠㅠ
그런데 리프레시 기능을 넣으려고 하는데
onLocationChanged(){
lat = loc.getLatitude();
lon = loc.getLongitude();
main();
}
이렇게 작성하였는데 움직이지 않고 리프레시 해버리면 좌표의 변화가 없어서 인지 oncreat만 실행이되고 onLocationChanged가 실행이 되지 않아요;; 그러니 main()도 실행이 되지 않아 배경화면만 나오고 있는것 같습니다.
onCreate()에서 바로 위도경도를 받고 싶은데 그게 잘 안되는군요 ㅠㅠ



