서버에 약간의 POST 요청을하는 안드로이드 응용 프로그램이 있습니다. 문제는 내 앱이 가능할 때입니다. 요청이 실패하면 얼마 후에 게시를 다시 시도 할 수 있기를 원합니다. 장치에서 네트워크의 가용성을 확인합니다. 이것을 어떻게 할 수 있습니까? 보내는 데이터를 유지하기 위해 서비스와 데이터베이스를 구현하는 것이 필요합니까? 내가 alarmmanager에 대해 뭔가 읽었지만 내 활동으로 이것을 구현하는 방법을 모르겠습니다.기기가 다시 온라인 상태 일 때 게시 요청 다시 시도
0
A
답변
5
항상 실행중인 서비스가 필요하지 않습니다. POST 나 웹 요청이 실패하면 대기열에 넣을 수 있습니다. (어떻게 든 [공유 매개 변수, db]) 요청을 저장하십시오. 그런 다음 브로드 캐스트 리시버를 사용하고 연결 변경된 인 텐트를 구독하십시오. 수신기에 지금 연결되어 있는지 확인하십시오. 및에 대기열에있는 항목이있는 경우 대기열을 처리 할 서비스를 생성 할 수 있습니다. 당신이 관심을 가져야
두 정확한 방송은이
android.net.wifi.WIFI_STATE_CHANGED
android.net.wifi.supplicant.CONNECTION_CHANGE
당신이 있는지 확인하기 위해이 코드를 사용할 수있는 방송 수신기에서이
<receiver android:name=".BroadcastReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<!-- .... -->
</intent-filter>
</receiver>
같은 매니페스트에 그들에게 등록 할 수 있습니다
네트워크 연결이 있습니다. 이 코드에 대한
public boolean isOnline() {
cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm == null)
return false;
final NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED) {
return true;
} else {
return false;
}
}
, 이러한 권한은 사용자가 활동을 떠난 경우에도이 방송 수신기가 작동 것, 대답에 대한
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
0
BroadcastReceiver를 확장하고이 클래스를 다음과 같이 등록하는 클래스를 만듭니다. registerReceiver (new BroadcastReceiverExtension, new IntentFilter (ConnectivityManager.CONNECTIVITY_ACTION));
네트워크에서 변경하면이 브로드 캐스트가 트리거됩니다.
받은 변경 사항에 대한 자세한 내용은 ConnectivityManager.EXTRA_NETWORK_INFO, ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, ConnectivityManager.EXTRA_NO_CONNECTIVITY 및 ConnectivityManager.EXTRA_REASON 항목을 확인하십시오.
관련 문제
- 1. IPN 배달 상태 다시 시도
- 2. Android : 전화가 온라인 상태 일 때 알림을 얻는 방법
- 3. as3 URL 요청 - 다시 시도 URL 요청
- 4. JSF : 초기 요청 및 다시 게시 요청?
- 5. Sinatra - 온라인 상태 일 때 어떻게 디버깅합니까?
- 6. Sys.WebForms.PageRequestManagerServerErrorException 다시 게시 할 때
- 7. 기기가 꺼질 때 앱이 다시 시작됩니다.
- 8. 기기가 잠자기 상태 일 때주기 알림이 작동합니까?
- 9. com.android.ddmlib.AdbCommandRejectedException : 기기가 오프라인 일 때 (기기가 연결되어 있어도)
- 10. 사이트가 라이브 일 때 ASP.NET 웹 응용 프로그램 다시 게시
- 11. 유휴 상태 일 때 토네이도 웹 서버를 다시 시작합니다.
- 12. 컴퓨터가 잠자기 상태 일 때 Java 프로그램을 다시 시작 하시겠습니까?
- 13. 기기가 인터넷에 다시 연결될 때 백그라운드에서 데이터를 푸시하는 방법
- 14. 다시 게시
- 15. 다시 게시 후 ListView 다시 게시
- 16. 기기가 일정 시간 동안 유휴 상태 일 때마다 앱을 다시 열도록하려면 어떻게해야합니까?
- 17. 기기가 온라인 상태 일 때 오프라인 데이터베이스를 Firebase와 동기화하는 방법은 무엇입니까?
- 18. PHP를 사용하여 다시 게시 할 때 jQuery 아코디언 상태 유지
- 19. 기기가 유휴 상태 일 때 푸시 알림 처리
- 20. EndlessAdapter 다시 시도 버튼
- 21. 스캐너 예외 다시 시도
- 22. 파이썬은 다시 시도
- 23. WebClient 다시 시도
- 24. TexBox 값을 다시 게시 할 때? ViewState 또는 데이터를 다시 게시 하시겠습니까?
- 25. 프로젝트가 온라인 상태 일 때 관리자 빈이 반환되지 않습니다.
- 26. 다시 시도 팝업에서 확인
- 27. jquery 다시 게시 실패
- 28. 은 다시 게시
- 29. 다시 게시 할 때 TextChanged 이벤트가 다시 트리거됩니다.
- 30. jquery 다시 게시 할 때 대화 상자가 다시 나타납니다.
감사합니다, 한 번 더 질문해야합니까? – Henry1988
물론 가능합니다. 귀하의 활동이 실행 중인지 여부와 상관없이 방송 수신자에게 통보됩니다. –