잠이 응용 프로그램은 내가 주기적으로 요청을 발사 할 수있는 발리 요청 간격 구현시 : 그것은 잘 한 응용 프로그램이 포 그라운드에서와 같이 작동발리 TimeoutError
final Handler handler = new Handler();
final int interval = 3000;
handler.postDelayed(new Runnable() {
public void run() {
// Volley request here...
Volleyclient client = Volleyclient.getInstance();
client.doSomeVolleyRequest(MainActivity.this, someListener, someDataToSend);
handler.postDelayed(this, interval);
}
}, interval);
합니다. 내가 홈 버튼을 누르면 앱이 잠들고 발리 TimeoutError가 발생하고 이유를 알 수 없습니다. "대기"모드 (화면 꺼짐)로 전환하면 같은 동작입니다. 내 앱을 포 그라운드로 토글하자마자 발리 요청을 계속합니다.
나는 잠 들어있는 동안 정말 시간 초과가 아니라 인터넷 연결 권한 문제가 아닌 것으로 생각됩니다. 다음과 같은 퍼미션을 사용합니다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
누가 그 행동에 대한 이유를 설명 할 수 있습니까? 앱이 실행될 때마다 내 앱이 계속 요청을 보내도록 조치 할 수 있다면 좋을 것입니다.
좋아,이 의미가 있습니다. 코드는 현재 내 MainActivity의 onCreate-Method에 직접 배치됩니다. 링크 나 샘플 코드를 게시하여 다른 스레드에 넣을 수있는 간단한 해결책을 가르쳐 주시겠습니까? – steven
모든 것을 이제 서비스로 마이그레이션했습니다. 실제 장치에서 거의 동일한 동작. 내가 USB (디버깅)를 통해 연결되어있는 경우 앱이 포 그라운드에 있지 않으면 계속 전송합니다. USB 연결을 끊으면 포 그라운드가 아닌 경우 Volley TimeoutError가 표시됩니다. 모든 경우에 수면 모드에서 실패를 보냅니다 (표시 꺼짐). 앱을 포 그라운드로 되돌려 놓으면 모든 것이 잘 작동합니다. 매우 이상하고 anoying. – steven
서비스 자체가 백그라운드에서 올바르게 작동하는 것 같습니다. 모든 경우 백그라운드에서 실행될 때 오류 토스트가 주기적으로 표시되어 스레드가 실행되는 것처럼 보입니다. 발리 통신이 실패합니다. – steven