java - 如何使用 Android 的 Handler.PostDelayed 使事件在指定时间发生?

标签 java android

我想让我的应用程序在将来的某个时刻执行代码。

我想做:

    Date now = new Date();

    for (Date beep : scheduledBeeps) {
        if (beep.after(now))
        {
            Logger.i("adding beep");
            m_beepTimer.postAtTime(beepNow, beep.getTime());
        }
    }

在日志中我可以看到添加了 4 声蜂鸣声,但它们从未触发。我假设它与uptimeMillis有关,但我不知道该怎么做。

最佳答案

您必须获得 now 和 beep.gettime() 之间的差异并将其传递给 postattime 函数。由于正常运行时间是作为基准,因此如果手机进入深度 sleep ,则可能不准确。

beep.gettime - now + SystemCLock.uptimeMillis()

应传递给 postattime 函数

您当前正在传递一个非常大的数字,相当于 1970 年 1 月 1 日以来的当前毫秒数。

关于java - 如何使用 Android 的 Handler.PostDelayed 使事件在指定时间发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764588/

相关文章:

java - 如何在 Java/Android-Studio 中绘制一个简单的可重绘矩形?

android - 为媒体播放器导入原始 mp3 资源

android - 如何曲线布置转角?

java - 从派生类调用构造函数

java - 如何使用 JMH 对异步操作进行基准测试

java - NumbeFormatException 问题

android - android 操作系统中的系统调用是如何执行的,是否可以监控它们?

java - 由于 java.lang.NoClassDefFoundError : org/testng/CommandLineArgs,无法运行 TestNG

Java:String.replace(regex, string) 从 XML 中删除内容

android - 如何完全摆脱 Activity 的 GUI(避免黑屏)