AlarmManager和PendingIntents在较新版本的Android上无法长期可靠地工作,该怎么办?

时间:2017-10-27 17:30:53

标签: android android-intent android-alarms

我创建的应用程序多年来一直运行良好,但现在在最新版本的Android上给我带来了问题。到目前为止,它已经在各种三星Galaxy设备(S3,S4,S5,Note 4)上运行,但似乎在Android 6.0.1或更高版本上运行它似乎已经破坏了功能。

我已经厌倦了谷歌的推送通知并依赖于我的应用程序,因此我决定使用我的服务器创建自己的自定义推送通知。

我使用AlarmManager以及Intent,Listeners和Wake Lock的组合,每隔15秒运行一次,检查我服务器上的消息。它运作良好,但现在意图服务不再接受意图。在深入研究之后,我发现AlarmManager不再每隔15秒就可靠地发出意图。充其量,一旦设备变为非活动状态,AlarmManager可能每3-5分钟触发一次意图。在Galaxy S8上,可能需要数小时。

我认为在较新版本的Android中内置了一些功能设置,这些设置会导致我的应用程序被终止并阻止其在后台运行。我已经尝试通过关闭应用程序的“优化电池使用率”Android功能设置来确保应用程序不受限制,但这似乎没有任何区别。在这种情况下,任务杀手也不是罪魁祸首。

我该怎么办? AlarmManager的代码和发送意图是:

Intent alarmIntent = new Intent("com.my.app.PushNotifications");
PendingIntent pushintent = PendingIntent.getBroadcast(this, 555555, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15000, pushintent);

0 个答案:

没有答案