10 초마다 서버 (http 클라이언트)에 요청하는 애플리케이션이 있습니다. 응용 프로그램 수명주기에 대해 많이 읽었습니다. 내 응용 프로그램에는 전경 플래그가있는 서비스가 있으며 안드로이드가 "활성"인 경우 작업이 잘됩니다 (응용 프로그램이 항상 작동합니다). 나는 진짜 안드로이드가있는 전화가 없으므로 에뮬레이터를 테스트 중이지만 스마트 폰에서 테스트 한 친구는 전화를 끊을 때 요청이 10, 30 분, 심지어 1 시간 동안 게시됨을 알 수 있습니다. 그가 화면을 켜면 요청 시간은 10 초로 돌아갑니다 (그는 서버에 액세스하여 로그를 볼 수 있습니다). 이것은 알려진 행동입니까? 그는 Google에서 Gmail 알리미를 설치했기 때문에 이와 동일한 문제가 발생했습니다 (큰 지연). 이것에 대한 해결책은 무엇입니까? 폴링 10 초마다이라면 내 서비스 (요청이 비동기 작업에 전송되도록) 타이머 작업안드로이드 - 전화가 iddle 모드에있을 때 느린 네트워크 액세스
감사합니다 모든
서비스이 타이머 시작 : @Override 공공 INT onStartCommand (의도 의도 startID가를 INT, 플래그 int)를 { \t \t timerMain = 새로운 타이머 (TRUE); \t \t timerMain.schedule (new mainTask(), 1000, 9000); \t \t \t \t startStatusNotification(); //이 서비스는 명시 적으로 //이 될 때까지 계속 실행되기를 원하기 때문에 끈적 거리며 돌아옵니다. 반환 START_STICKY; } mainTask() 메소드에서 httpclient 요청이 호출됩니다. 배터리가 소모 될 수 있음을 알고 있지만,이 애플리케이션은 일종의 "이 이벤트를 즉시 원합니다."사용자는이를 알고 있으며 알려진 위험을 알고 있습니다. 왜 안드로이드가 사용자를 생각합니까? – Dibo
나는 약 30 분 동안 정보를 찾지 못했지만, 일반적으로 당신은 옳습니다. 완전 전력, 저속 및 유휴 상태와 다른 주기로 전환하는 세 가지 무선 상태가 있습니다. 전체 설명 netowork과 함께 작동하는 안드로이드의 작동 방식은 다음과 같습니다 [here] (http://developer.android.com/training/efficient-downloads/efficient-network-access.html) – marwinXXII
'WakeLock'을 예약해야 할 수도 있습니다. 당신의 서비스를 위해 언제 일어날 지 알고 있습니다. 내 생각에, 기본적으로 안드로이드는 매우 자주 예약되는 타이머 요청에 대해 깨우지 않으며 설명대로 일정을 잡아 둡니다. 반면 WakeLocks는 안드로이드가 깨어나도록 강제 할 수 있습니다. [내 대답을 업데이트했습니다.] – Madushan