Fra*_*res 6 android alarmmanager samsung-mobile android-5.0-lollipop android-5.1.1-lollipop
我开发了一个应用程序,它使用AlarmManager来设置需要在一年中的某个特定时间触发的群警报(通常大约50个).这是我正在使用的代码,因为4.4 kitkat更改了AlarmManager.
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
long setDate = fireDate.getTime(); // it's a calendar date defined above
Intent intent = new Intent(LOCAL_DISPLAY_MESSAGE_ACTION);
PendingIntent pending = PendingIntent.getBroadcast(ctx,
id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.RELEASE.startsWith("6")) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, setDate, pending);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
am.setExact(AlarmManager.RTC_WAKEUP, setDate, pending);
} else {
am.set(AlarmManager.RTC_WAKEUP, setDate, pending);
}
Run Code Online (Sandbox Code Playgroud)
除了上面的代码,我正在使用清单中正确定义的广播接收器.
public class LocalReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
PushWakeLocker.acquire(context);
// do some stuff
PushWakeLocker.release();
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息可能会有所帮助.
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)
几个月以前,我一直只是从三星设备(5.0 /5.1安卓版)得到了不好的评论,根本没有得到他们的本地通知.我的意思是,它没有触发警报,似乎设备跳过它或没有唤醒.
在测试中,主要是带有5.0.1的三星S4,我总是按时收到警报,所以这让我发疯.仅供参考,这段代码一直很好用.
我对此进行了很多研究,但遗憾的是我没有得到任何有用的信息.并不是他们得到延迟的警报(正如我在某些线程中所读到的那样),而是他们根本没有得到警报.所以这不是关于棒棒糖和报警管理员的已知问题.
我感谢您的时间,欢迎任何建议!
sai*_*otd 11
您的问题(或噩梦)是三星智能管理器.此应用程序自2015年起预装了所有三星手机,并且应该停用未使用的应用程序."它如何知道哪些应用未被使用?" 你可能会问 - 简单:
用户3天未启动的每个应用都会停用.
所有剩余的AlarmManager条目 - 当然 - 也会被删除.你可以在他们的"开发者论坛"上阅读它.请随时关注此处或此处,直到这些线程被工作人员删除.我还没有看到三星有人回应这个话题.
"修复"此问题的唯一方法是通知您的应用用户有关情况,并向他们展示如何在智能管理器中将您的应用列入白名单.我们必须设置一个网站,其中包含分步说明,说明如何为我们的用户执行此操作.
您可以考虑设置后台服务,或者每六个小时左右调用一次AlarmManager - 这些黑客都不会起作用.
| 归档时间: |
|
| 查看次数: |
4820 次 |
| 最近记录: |