我想在应用程序中每秒运行一次警报服务,在5.1版本以下可以正常工作。但它不会在5.1设备中触发。我正在使用常用软件唤醒 Intent 服务。logcat消息说“可疑的时间间隔短为1000毫秒;扩展到60秒”。如何在5.1中每秒进行轮询?有人可以建议我如何实现这一目标吗?
说明多一点:
我的用例是,我需要每隔30分钟执行一次操作。 AFAIK为此,使用警报管理器是有效的方法,但是这里
1)我需要向用户显示倒数计时器。 (计时器任务,倒数计时器,ScheduledExecutorService为此非常有用)
2)我需要每30分钟(通过通知)通知用户,即使该应用处于后台运行。
但是这里我的问题是当应用程序处于后台时,当您从最近的状态中刷出应用程序时(即应用程序进程被杀死),所有服务或计时器,处理程序,执行器服务都将不起作用)。在这种情况下,如何在30分钟结束后通知用户。如果我以错误的方式思考,请指导我。
谢谢,
柴坦亚
最佳答案
这是Android Lollipop中的正常行为。
告诉您系统不再喜欢这些短时间间隔。
问题#161244记录了以下内容:
因此,请勿为此使用AlarmService
。首选线程或Executors
或TimerTask
或其他:
// Using Handler
new Handler().postDelayed(runnable, TimeUnit.SECONDS.toMillis(1));
// Using Executors
Executors.newSingleThreadScheduledExecutor().schedule(runnable, 1, TimeUnit.SECONDS);