我有一个应用程序,可以通过通知响应通知。因此,基本上,我对此有一个
的意图Intent actionIntent = actionIntent = new Intent(this, NotificationActionIntentService.class);
actionPendIntent = PendingIntent.getService(
this,
requestCodeBtn,
actionIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
我在NotificationActionActionInterService中所做的事情是我指出所需的更新所需的httprequest。
注意:当应用在前景中时,一切正常。
这是:
收到GCM后,当我按通知时。立即行动,一切仍然可以正常工作。
但是,当我在接收GCM之前等待30秒钟之前,请按Notification。Action Action,网络请求未完成。日志仅表示它提出了网络请求。但是我从来没有得到任何回应。当我查看BE服务器中的日志时。我没有收到网络请求。
但是,当我手动启动应用程序时,将恢复网络。似乎正在暂停网络请求,然后在应用程序已经在前景中时恢复。(我不想要这种行为,因为我希望它仅在后台执行)
update :按Notification.Action,一两分钟后(不打开应用程序)后,我在日志中收到了java.net.ConnectException: Failed to connect
。(注意:我有互联网连接)。似乎该应用程序仅在后台运行时无法连接到网络。
PS :IM在创建我的网络请求时使用 RETROFIT 2 。我也将Android N用作测试设备。
回答我自己的问题:
source -> https://stackoverflow.com/a/41281059/5285687
事实证明,当设备处于节电模式时,系统会防止背景应用程序访问网络。
这是您可以使用的解决方案。 -> https://stackoverflow.com/a/39167736/5285687
但是您需要为此提供一个Android通知。