android - 报警期间暂停服务,之后恢复

标签 android alarmmanager alarm resume pausing-execution

所以我有一个服务,我希望能够监听警报并在警报响起时暂时关闭/暂停,然后再自行恢复。我的服务所做的是,它使用 WindowManager 在屏幕顶部扩展 View - 它是一个锁屏应用程序。但因此,它始终位于其他所有内容之上。

对于使用 PhoneStateListener 的来电来说,这很容易实现,但我还没有看到任何方便的闹钟 - 我想我可以实现一个 AlarmManager.onAlarmListener,一旦闹钟响起,它就会关闭我的服务,但我不确定之后我将如何重新打开它。

感谢您的帮助!

最佳答案

终于明白了!

你可以这样获取下一个闹钟的时间:

  AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  alarmManager.getNextAlarmClock().getTriggerTime()

所以只需将此添加到您的服务 onCreate 方法中:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        if (alarmManager.getNextAlarmClock() != null) {
            UIHandler.postAtTime(new Runnable() {
                @Override
                public void run() {
                    stopSelf();
                }
            }, alarmManager.getNextAlarmClock().getTriggerTime());
        }

本质上,它所做的是获取下一次闹钟的时间(以毫秒为单位),然后在下一次闹钟的时间发布一个可运行的。

我相信它只适用于 API 21+

关于android - 报警期间暂停服务,之后恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637418/

相关文章:

android - DocumentContract 上的 ContentResolver 查询列出所有文件,忽略选择

android - future 通知的时间戳不正确

java - 我可以将闹钟更改为重复闹钟吗?

android - 如何检测通知是否已被驳回?

android - Google 地方自动完成给出 "Cannoat load results !"

java - 这是没有 get/set 的 Retrofit POJO 的正确方法吗?

Android WebView JellyBean -> 不应该发生 : no rect-based-test nodes found

Android NotificationListenerService 后台执行限制/Doze

java - Android set() 和 setExact() 警报以不正确的时间间隔触发

java - 当时钟改变时处理保存的纪元时间