1

내 브로드 캐스트 수신기에 문제가 있습니다.BroadcastReceiver에는 인터넷 연결이 없습니다.

오전 6시에 알람을 설정 했으므로 인터넷 수신기의 일부 데이터를 다운로드하고 처리해야하는 방송 수신인을 해고해야합니다.

예를 들어 오후 3시에 알람을 설정하면 정상적으로 작동합니다. 하지만 문제는 6시에 있으며 네트워크 연결이 없기 때문에 다운로드가 실패합니다.

다운로드를 시도하기 전에 부분적인 잠김 잠금을 수행합니다. 이것과 관련 될 수 있습니까? 전화가 잠을 많이 자고 부분적인 잠에서 잠김으로 충분하지 않습니까?

그 밖의 무엇입니까? 네트워크 데이터가 활성화 된 상태로 전화를 두 번 확인했습니다. 야간에 이메일과 whatsapp를 수신합니다.

안드로이드가 연결을 복구 할 수있는 방법이 있습니까?

어떤 힌트 나 도움도 환영합니다!

안부 인사, Federico.

내 코드 : 브로드 캐스트 리시버에서

OnReceive 방법 :

@Override 
public void onReceive(Context context, Intent intent) { 
    ... 
    // acquire partial wake lock 
    _PowerManager.acquire(); 

    // check internet access 
    if (!_Utils.isDataEnabled()){ 
     // here is where it enters at 6am, isDataEnabled return false, so it enters here 
     _Log.d("_BroadcastReceiver_Synchronize:onReceive","No internet, cancel sinc"); 
     // release partial wake lock 
     _PowerManager.release(); 
     return; 
    } 

    // excecute async task that downloads data 
    _WebServicesGet ws = new _WebServicesGet(null, null, null); 
    ws.syncAll(this, false); 
    return; 
} 

가 _Utils.isDataEnabled :

public static Boolean isDataEnabled() { 
    // this method returns false at 6am 
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 
+0

매니페스트에 인터넷 사용 권한을 설정 했습니까? – Gonzalo

+1

https://developer.android.com/training/monitoring-device-state/doze-standby.html – CommonsWare

+0

Gonzalo에게 감사드립니다. 예, 내 앱에 인터넷 권한이 있습니다. –

답변

1

CommonsWare는 바른 길에 나를 넣어.

대답은 도즈 모드였습니다. 안드로이드 6 이상에서는 전화를 도즈 모드로 전환 할 수 있습니다.이 모드에서는 앱이 인터넷 액세스를받지 못하게됩니다 (다른 것들 중에서도). 따라서 알람 및 깨우기 잠금을 설정 한 경우 CPU 액세스가 가능하지만 인터넷에 액세스 할 수 없습니다.

official documentation에서 : 사용자가 플러그를 분리 장치를 잎

경우 문서는 장치가 졸다 모드로 전환되지 않습니다 거기에 연결되어 있다면,하지만 내 경우는 플러그 상태에도 불구하고 입력 않았다고 말한다 화면이 꺼진 상태로 일정 시간 동안 정지하면 장치가 도즈 모드로 전환됩니다.

혼란 스러웠습니다.

어쨌든, 필자는 내 앱을 허용 목록에 추가하려고 시도했지만 제대로 작동하기 시작했습니다. 6시에 알람이 울리며 브로드 캐스트 수신기가 인터넷에 접속합니다. official documentation에서 다시

:

사용자가 수동으로 설정에서 허용 된 사이트 목록을 구성 할 수 있습니다> 배터리> 배터리 최적화. 또는 시스템에서 사용자에게 허용 목록을 허용할지 묻는 메시지를 에 제공합니다.

희망, 나는 이것이 다른 누군가에게 도움이된다는 것을 분명히했습니다.

CommonsWare에게 감사드립니다.