ユーザーから入手したレポートの1つを調べると、省電力モードが有効になっていると(Nexus 4、Android 5.1.1)、データをダウンロードするバックグラウンドサービスがしばらくして接続の例外になる。これは、デバイスの画面がオフで、画面がオンの状態でテストしなかった場合に発生します。省電力モードでのネットワーク接続
操作時に両方PowerManager.PARTIAL_WAKE_LOCKとWifiManager.WIFI_MODE_FULLを保持があります。私は接続のためにOkHttpを使用していて、Wifiは常にオンになっていました。
このような状況で、両方のロック(wifiとpartial_wake)を保持する以外に何ができますか?これは、ユーザーがこれらの接続を有効にするために重要です。
スタックトレース - しかし、それはここでは本当に関係ありません、私は思う:
W/System.err: java.util.concurrent.ExecutionException: java.net.ConnectException: Failed to connect to *************
W/System.err: at java.util.concurrent.FutureTask.report(FutureTask.java:93)
W/System.err: at java.util.concurrent.FutureTask.get(FutureTask.java:177)
....
W/System.err: Caused by: java.net.ConnectException: Failed to connect to **************
W/System.err: at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:139)
W/System.err: at okhttp3.internal.io.RealConnection.connect(RealConnection.java:108)
W/System.err: at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:188)
W/System.err: at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:127)
W/System.err: at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
W/System.err: at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:289)
W/System.err: at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:241)
W/System.err: at okhttp3.RealCall.getResponse(RealCall.java:240)
W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198)
W/System.err: at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160)
W/System.err: at okhttp3.RealCall.execute(RealCall.java:57)
...
編集を:これは、無線LANとモバイルデータ接続の両方で発生します。私はまた、起床ロックが保留されていることを確認し、接続が不可能であるという事実を除いて、すべてが想定どおり動作しています。画面がオンの場合、すべて正常に動作しますが、画面をオンにすることは許容できる解決策ではありません。
感謝を(例えば、分析)すべての支援モジュールを残すことができます。実際に私のサービスはフォアグラウンドサービスだと言いました。その前景の状態が正しく処理されているかどうかを見ていきます。 – mhenryk
私はあなたの答えを正しいものとしてマークしています - 問題はより詳細でしたが、実際にはフォアグラウンドサービスはここで使用しなければならないものです。問題は、私のサービスがある時間フォアグラウンドで停止していたことです(他の作業をしている間に2〜2回)、フォアグラウンド状態に戻りました。これはAndroidアプリがネットワークアクセスを強制終了するのに十分だった。 – mhenryk