ここに簡単な説明があります。
Android サービスには、サーバーからパケットを受信するスレッドがあります。これを「レシーバー」と呼びます。
のパケットを待っていinputStream.read()
ます。
問題のシナリオは次のとおりです。
- サーバーは何らかの要求パケットを送信します。
- 受信側スレッドはパケットを起動して処理する必要がありますが、機能せず、ログを出力しません。
- サーバーは接続を閉じます。
- したがって、クライアントの他のスレッドは接続を閉じます。
- 受信機は「ECONNRESET」で突然終了します。
通常はうまく機能します。私が思うに、問題は数時間に1回発生します。
電話の過負荷またはスリープ状態が原因である可能性があります。
しかし、どちらがクリアかは判断できません。
私が思いついた解決策は現在次のようなものです:
- 受信スレッドの優先順位を上げます。
- wake lock と wifi ロックを使用します。
それは私のビジネス顧客に関連しているため、まだ試していません。この問題についてご意見をお聞かせいただけますか。