내 앱은 사용자 정의 간격으로 울리는 RTC_WAKEUP 알람을 예약합니다. 화재가 발생하면 위치 업데이트를 통해 위치 정보 서비스에 등록하고 (도시 수준은 충분 함) 단일 위치 보고서에 대해 최대 60 초 동안 대기하고 수신기를 등록 취소 한 다음 위치 별 웹 쿼리를 작성하고 다양한 작업을 수행합니다 반환 된 정보가있는 것들.알람이 장치를 깨울 때 위치 요청 시간이 초과됩니다. 무선 네트워크를 수동으로 다시 연결해야합니까?
위치 수정에 사용할 수있는 무선 네트워크가 항상 이어야합니다. 최소이어야합니다. 이 절차는 거의 항상 잘 작동하지만 로그는 한 번씩 위치 보고서를 기다리는 동안 앱이 시간 초과됨을 보여줍니다. 이것은 알람이 장치를 잠자기에서 깨 웠을 때만 나타나는 것 같습니다. 및 장치는 모바일 네트워크 연결이 불안정한 건물 내부 깊숙한 곳에 있습니다. 이러한 상황에서 무선 네트워크는 위치 정보의 유일한 원천이 될 수 있으므로, (a) 무선 네트워크가 알람이 잠자기에서 깨어나면 무선 네트워크가 자동으로 다시 연결되지 않습니다 (누군가가 무선 네트워크를 열려고 시도 할 때까지). 연결?) 또는 (b) 60 초만으로는 충분하지 않습니다.
이 중 하나가 사실인지 확인할 수 있습니까? 그것이 (a)라면 "무선 네트워크를 다시 연결 한 다음 다시 연결하십시오"라는 명령을 내릴 수 있습니까?
내가 시간 제한 간격으로 주변에 바이올린 수 있지만, 그 문제를 해결하기 위해 나타나는 경우에도, 내가 무슨 일이 일어나고 있는지 이해할 때까지 진정으로 근본 원인을 해결 한 확신 할 수 없습니다 ...
절차에 대한 자세한 설명 : 알람이 수신되면 LocationClient
에 위치 서비스가 등록 된 IntentService
이 실행됩니다. 그런 다음 wait()
루프를 입력하면 60 초 후에 오류를 포기하고 실패를 반환합니다. 클라이언트는 차례로 onConnected()
에서 LocationListener
을 등록합니다. 해당 청취자는보고를 받으면 대기 스레드 인 Location
및 notifyAll()
을 저장합니다. 이것은 LocationRequest
의 모습이다 (I 하나만보고 싶어하지만, 나는 가능한 한 빨리 원하는) :
LocationRequest request = LocationRequest.create();
request.setPriority(LocationRequest.PRIORITY_LOW_POWER);
request.setInterval(0);
request.setFastestInterval(0);
request.setNumUpdates(1);