전경 서비스를 사용하여 실시간 위치 추적 응용 프로그램 및 현재 위치를 서버로 업데이트 중입니다.
이제는 기기가 깊은 잠에있을 때 앱을 계속 활성화 할 수 있습니다. 하지만 Doze 모드에서 네트워크 액세스가 일시 중지되어 서버에서 업데이트 할 수 없습니다.
Google 개발자 가이드 제안에 따라 우선 순위가 높은 FCM 메시지를 사용하여이 문제를 해결할 수 있습니다. 내 경우에는 네트워크 액세스가 일시 중지 된 동안 서버에 알림을 보내는 방법 (OS 또는 수동으로 인터넷 액세스 사용 안 함을 식별해야 함).도스 모드에서 인터넷을 지속적으로 사용하는 방법 Marshmallow and Nougat
7
A
답변
0
시도 확인 NetworkInfo 상태
public static boolean isNetBlocked(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
return networkInfo != null && networkInfo.getDetailedState().name().equals(NetworkInfo.DetailedState.BLOCKED.name());
}
+0
에서 더 이상 작동하지 않습니다. 장치가 세이버 _Battery 일 때'Blocked '를 반환하고 _Restrict 백그라운드 데이터 _ 모드 – nAkhmedov
+0
인터넷이 OS 또는 수동으로 비활성화 된 경우 두 조건 "networkInfo"에서 모두 null을 반환합니다. –
0
한 가지 방법은 디바이스 모드를 변경 한 후 디바이스를 알아낼 것이다 일단이 방송 할 액션 -
"android.os.action.DEVICE_IDLE_MODE_CHANGED"
등록 인 도즈에/비이고 사용 중지 :
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
boolean isDeviceIdle = pm.isDeviceIdleMode();
해결책을 찾았습니까? – nAkhmedov
아직,하지만 여전히 적절한 대체 솔루션을 찾고 있습니다. –
발견되면 알려 주시기 바랍니다. 미리 감사드립니다. – nAkhmedov