当前位置: 首页 > 知识库问答 >
问题:

在android 5.1中每秒调度警报

后源
2023-03-14


我想在我的应用程序中每秒钟运行一次报警服务。它在5.1版本以下运行良好。但在5.1设备中不触发。我正在使用commonsware唤醒意图服务。logcat消息说:“可疑的短间隔1000毫秒;扩展到60秒”。如何在5.1中进行每秒轮询?有人能建议我如何做到这一点吗?

多解释一点:

我的用例是我需要每隔30分钟做一些操作。使用报警管理器是解决这一问题的有效方法,但在这里

1) 我需要向用户显示倒计时计时器。(计时器任务、倒计时计时器、ScheduledExecutorService对此非常有用)
2)即使应用程序处于后台,我也需要每隔30分钟通知用户一次(通过通知)。(报警服务对此已足够)

但这里我的问题是,当应用程序处于后台时,当您从最近的应用程序中刷出应用程序时(即,应用程序进程被终止),所有服务或计时器、处理程序、执行程序服务都将无法工作)。在这种情况下,我如何在30分钟后通知用户。如果我想错了,请给我指路。

谢谢,
柴坦亚

共有3个答案

田冥夜
2023-03-14

1和2都使用:

>

  • AlrmManager用于以大于一分钟的间隔(例如请求的30分钟)提醒用户的角色

    如果通知触发了一个您需要在前台显示更新的活动,那么也可以做一些便宜的事情,例如postDelayed(),为用户提供该活动中的定期更新

  • 仇航
    2023-03-14

    你为什么要这样做?
    改用处理程序:

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // do your stuff here, called every second
            mHandler.postDelayed(this, 1000);
        }
    };
    
    // start it with:
    mHandler.post(runnable);
    

    并使用以下命令停止 1 秒计时器:

    mHandler.removeCallbacks(runnable);
    
    焦学海
    2023-03-14

    这是AndroidLollipop中的正常行为。

    可疑短间隔1000毫秒;扩展到60秒

    告诉你系统不再喜欢那些短时间间隔。

    问题#161244记录了:

    虽然目前还没有足够的文档记录,但这已经达到了预期的效果(我们也意识到了问题的这一面)。

    非常笼统地说:短周期和近未来的警报在电池中成本高得惊人;需要短期或近期工作的应用应使用其他机制来安排其活动。

    因此,不要为此使用警报服务。首选线程或执行计时器任务或其他内容:

    // Using Handler
    new Handler().postDelayed(runnable, TimeUnit.SECONDS.toMillis(1));
    
    // Using Executors
    Executors.newSingleThreadScheduledExecutor().schedule(runnable, 1, TimeUnit.SECONDS);
    
     类似资料:
    • 问题内容: 我有一个这样构造的mysql反馈数据库: 名称| 位置| 反馈 瑞安| 英格兰| 大力支持 显然,条目更多。我正在尝试建立一个反馈div,它通过ajax每10秒显示一个新的反馈项。 所以我构造了这个: 这是我的PHP文件: 但是,这仅显示两个。它不会一直显示新的,而是纯粹显示第一个然后显示第二个并停止。 我究竟做错了什么?谢谢 :) 问题答案: 你想做一个吗? 要么: 或者,如果您希望

    • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

    • 部分也很好,当我提交表单时,它会更新。 更改的函数是: 并且是这样称呼的: 例

    • 问题内容: 如果我希望每N秒重新加载整个页面,则可以在HTML中输入以下内容: 是否有针对AJAX调用执行相同操作的标准做法?我想安排一个AJAX调用每10秒关闭一次,以便更新页面的某些部分,而不刷新整个页面。如果我可以在不同的时间安排多个AJAX调用会更好,因为页面的某些部分可能需要比其他部分更频繁地更新。 TIA 问题答案: 您可以使用或(后者可能最适合您想要的操作)。 …其中是一个通过AJA

    • 本文向大家介绍ajax的定时调用每5秒调用一次,包括了ajax的定时调用每5秒调用一次的使用技巧和注意事项,需要的朋友参考一下

    • 问题内容: 我希望简单的动画每0.5秒设置一次位置,但它不会仅在循环结束时设置动画。 int x = 1; int y = 1; 我已经尝试过使用thread.sleep()绘制动画,并且可以正常工作,但动画确实正确,但不幸的是,这对我来说不是一个选择,因为我需要在框架内移动jlabel并在其中放置图形图片。有人可以帮助我解决这个问题。 我已经尝试过这两个相同的结果 问题答案: 与其使用Java