Articles of android alarms

由UI启动的第1部分持久foreGround android服务,也在睡眠模式下工作,也在手机重启时启动

Status:—我同样接受Karakuri和Sharad Mhaske的回答 ,但自从Sharad Mhaske 在 赏金开始 后回答,赏金应归他所有。 第2 部分 :第2 部分持久的foreGround android服务,以UI启动,也在睡眠模式下工作,也从手机重启开始 在stack overflow ,只能接受 一个答案 。 我认为这两个答案都是可以接受的,但必须选择一个(我随机选择)。 观众被邀请上/下投票答案/问题, 以欣赏努力! 。 我赞成Karakuri的答案来弥补声誉。 Scenario:— 我想让用户单击开始/停止按钮并从UI活动启动/停止服务。 我已经制作了用户界面,所以不关心它。 但只是按钮点击事件的逻辑。 不希望将服务绑定到UI活动 。 如果活动关闭,服务应该继续运行。 想要尽最大努力使服务持久 ,并且在任何情况下都不会停止。 将它赋予最大的权重并将其作为ForGroundSerice运行,因为它具有更高的重要性层次。 (希望没问题?) 除非我的应用程序用户界面点击了停止按钮 , 否则不要让它停止 (或者应该自行重启)即使android回收内存。 我和手机用户都知道了。 这项服务至关重要。 即使在睡觉。 details =我的应用程序执行一些操作,为用户提供的时间(通常为15分钟)hibernate,唤醒并再次执行操作。 这永远不会结束) 如果我需要AlarmManager ,如何实现? 或任何其他方式? 或者只是将操作放在一个无休止的while loop and sleep for 15 minuts在结束时while loop and […]

检测默认闹钟应用程序警报

我想知道是否有办法(可能是系统广播)知道闹钟默认应用程序现在开始响铃。 如果不是 – 如果我能够逐步获得用户设置的所有活动警报的列表,我也会感到满意(我可以从每个警报中提取它将响铃的确切时间..) 到目前为止我尝试了什么: 我知道有一种方法可以将格式化字符串转换为下一个警报: String nextAlarm = Settings.System.getString(context.getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED); 此方法返回某些设备(例如所有三星Galaxy系列..)一个空字符串,即使设置了警报(由三星原生闹钟应用程序..)。 我敢打赌它只适用于具有默认警报应用程序的nexus设备。 我想得到一个通用的解决方案,无论哪种方式。 TIA UPDATE 我会尽力使我的问题更清楚: 我不感兴趣(直接)知道AlarmManager持有的所有PendingIntent 我只想了解用户隐含设置的警报,特别是关于他为唤醒而激活的警报。 我的最终目标是暗示用户醒来 。 而已..

Lollipop API用于控制状态栏中的警报图标

这是一个特定于棒棒糖的问题 ,因为API已经发生变化。 要了解如何在早期版本上执行此操作,请参阅相关问题: 控制状态栏中的警报图标 我想知道如何在状态栏中打开/关闭系统警报图标,如下图所示: 从1.3版开始, 及时闹钟控制棒棒糖上的这个图标。 在该版本之前,代码使用了相关问题中详述的私有API 。 他们使用的新技术适用于运行v5.0.1的无根Nexus 5。 更新 看起来这个新API还有很多,而不仅仅是更改图标。 锁定屏幕现在还显示我为其设置警报的时间。

应用程序更新后Android AlarmManager会继续运行吗?

从我所看到的情况来看,如果你计划一个无限期重复的警报,它将不会停止运行,直到你重启设备或卸载应用程序。 我想知道,在应用更新的情况下,这些行为如何? 例如,您从Play商店下载该应用程序的版本1,然后运行该应用程序,此警报开始运行。 然后发布版本2并执行自动或手动更新。 此警报是否仍在继续运行(或者您是否必须再次启动应用程序才能启动警报)? 在我的场景中,我确实需要它这样做,所以我希望答案是它会继续运行。 但是,如果您在版本2中更改了警报代码,会发生什么?

android中的RTC和RTC_WAKEUP之间的区别

我是新手android我必须每30分钟执行一些操作,无论我的应用程序是否正在运行,所以我想如何使用服务和报警管理器执行这些操作任何示例或运行将有所帮助

Android Alarm Manager setExactAndAllowWhileIdle()在Doze模式下无法在Android 7.0 Nougat中运行

我试图使用Alarm Manager的setExactAndAllowWhileIdle每隔30分钟在我的应用程序中发出警报,但它无法正常工作! 每当我收到警报信号时,我都会通过发出推送通知来测试function。 问题是:当设备闲置一段时间后进入打盹模式时,我不再收到警报。 但是,只要我打开屏幕,我就会收到通知。 我的应用程序需要准确的警报,需要每30分钟准确按时交付! 由于设备处于打盹模式,它无法接收延迟警报或丢失警报! 我在我的代码中使用了以下内容: 我在打开应用程序时设置闹钟。 我使用WakefulBroadcastReceiver接收警报信号。 在其onReceive()方法中,我设置了下一个警报。 我也是,启动一个只发出推送通知的startWakefulService,然后自行停止。 我在onReceive()的末尾调用completeWakefulIntent。 我尝试了两种方法:RTC_WAKEUP和ELAPSED_REALTIME_WAKEUP 笔记: wakefulbroadcastReceiver类在Manifest中注册。 我添加了以下权限: android.permission.WAKE_LOCK 我尝试了White-Listing我的应用程序,但结果是一样的 我尝试使用setAlarmClock() ,即使在打盹模式下也一直工作,每50个警报就有一个丢弃/延迟警报。 所以,它也不完美。 而且我不希望用户一直看到警报图标。 在打盹期间,setExactAndAllowWhileIdle()不仅不起作用,而且在工作时也具有可怕的准确性。 我通常会收到很多警报信号 1-3分钟后或1-3分钟前。 我正在使用华为Mate 8和android 7.0 Nougat进行测试。 PS:在回答之前,请确保您了解从Android 6.0 M和Doze模式开始施加的限制。 Link1: https : //developer.android.com/training/monitoring-device-state/doze-standby.html 总之,它说: 如果需要设置在Doze中触发的警报,请使用setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。 使用setAlarmClock()设置的警报继续正常启动 – 系统在警报触发前不久退出Doze。 现在,为什么我不能使用setExactAndAllowWhileIdle()每隔30分钟获得准确的报警信号? 而且,为什么setAlarmClock() 100%不可靠?!

如何调试应用程序中运行的AlarmManager警报?

我们有一些重复的警报设置,它们在大多数情况下都能正常工作。 有时虽然他们卡住了(可能以某种方式取消)。 如何调试它以确保警报实际上在看起来卡住时关闭? 关于警报被取消的原因:我知道当用户强制从Applications Manager停止您的应用程序时会发生这种情况。 系统可以随机取消吗? (比如杀死整个应用程序来收回资源?)

以编程方式在android中打开屏幕

我正在开发一个警报应用程序。 从主要活动我使用广播设置闹钟。 然后在广播接收器中的onReceive中,我调用允许用户关闭或暂停警报的活动…在该活动中,在onCreate的开头我使用这些线来打开屏幕并解锁设备: final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 这适用于三星Galaxy S2与Android 2.3.4,但不适用于htc与Android 2.3.5。 在HTC它没有做什么,当我按下锁定按钮屏幕自动解锁没有我拖动圆圈。 就像flag_dissmiss_keygard一样,但是flag_turn_screen_on不是。 这样做还有另一种方法或其他方法吗?

如何设置定时器每隔n分钟调用一次函数?

我想在Android应用程序中设置一个计时器,该计时器将在每次15/30/45之后调用一个函数,并在用户登录时调用n分钟。 但是当用户注销时它也会停止计时器。 如果用户再次登录,计时器将从启动开始。 我希望将该选项(15/30/45 / n分钟)保存在数据库中,以便我可以在同步后更新列表。 定时器是一种很好的方法还是我需要使用报警服务? 或者是否需要任何系统服务? 是否可以将本地电话数据库存储中的先前doc /文件更改为通过Web服务器接收的新文档? 这是否需要任何系统服务?

Firebase发出太多警报

我已经有一个每日触发的警报,它有FLAG_UPDATE_CURRENT 。 这是开发人员控制台的日志。 java.lang.SecurityException: !@Too many alarms (500) registered from pid 32326 uid 10206 at android.os.Parcel.readException(Parcel.java:1540) at android.os.Parcel.readException(Parcel.java:1493) at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:206) at android.app.AlarmManager.setImpl(AlarmManager.java:428) at android.app.AlarmManager.set(AlarmManager.java:215) at com.google.firebase.iid.FirebaseInstanceIdService.zzagl(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zzd(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zzm(Unknown Source) at com.google.firebase.iid.zzb$2.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 我使用的是Firebase 9.6.1 。 更新: public static void setAlarm(Context context, boolean […]