Notification.Actionsを介して通知に応答できるアプリがあります。だから基本的に、私はこれで保留中の意図を持っています
Intent actionIntent = actionIntent = new Intent(this, NotificationActionIntentService.class);
actionPendIntent = PendingIntent.getService(
this,
requestCodeBtn,
actionIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationActionIntentService内で行うことは、実行する必要のある更新を示すBEへのHttpRequestです。
注:アプリがフォアグラウンドにある場合、すべてが正常に機能します。
これが事です:
GCMを受信した後、すぐにNotification.Actionを押すと、すべて正常に動作します。
しかし、GCMを受信してから30秒ほど待ってからNotification.Actionを押すと、ネットワーク要求が完了しません。ログには、ネットワーク要求を行ったことが示されているだけです。しかし、私は何の反応もありません。BEサーバーでログを表示するとき。ネットワークリクエストを受信しません。
しかし、アプリを手動で起動すると、ネットワークが再開されます。アプリがすでにフォアグラウンドにあるときに、ネットワークリクエストが一時停止され、再開されているようです。(バックグラウンドで実行したいので、この動作は必要ありません)
更新:Notification.Actionを押した後、1〜2分後(アプリを開かずに)java.net.ConnectException: Failed to connect
、ログに記録されました。(注:私はインターネットに接続しています)。バックグラウンドでのみ実行されている間は、アプリがネットワークに接続できないようです。
PS:ネットワークリクエストの作成にRetrofit2を使用しています。また、AndroidNをテストデバイスとして使用しています。
私自身の質問に答える:
ソース-> https://stackoverflow.com/a/41281059/5285687
デバイスが省電力モードの場合、システムはバックグラウンドアプリがネットワークにアクセスできないようにします。
これがあなたが使うことができる解決策です。-> https://stackoverflow.com/a/39167736/5285687
しかし、あなたはこれのためにアンドロイド通知を提供する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加