Java 手机处于待机模式时未调用Handler.postDelayed

Java 手机处于待机模式时未调用Handler.postDelayed,java,android,handler,Java,Android,Handler,我正在尝试编写一个简单的应用程序,可以在给定的时间内使我的手机静音。这是我的第一个安卓应用程序,但经过几个小时的阅读,我认为它几乎完成了。但它仍然有一个我无法解决的问题 我正在使用一个活动来显示GUI。它有按钮来设置开始和结束时间,以及其他所需的一切。当用户输入所有参数后,这些参数将传递给服务。此服务使用handler对象注册2个回调(使用handler.postDelayed)。一个用于启动静音,一个用于结束静音(在SetMuteIntervall中)。 最初的测试似乎有效,但如果我尝试将其静

我正在尝试编写一个简单的应用程序,可以在给定的时间内使我的手机静音。这是我的第一个安卓应用程序,但经过几个小时的阅读,我认为它几乎完成了。但它仍然有一个我无法解决的问题

我正在使用一个活动来显示GUI。它有按钮来设置开始和结束时间,以及其他所需的一切。当用户输入所有参数后,这些参数将传递给服务。此服务使用handler对象注册2个回调(使用handler.postDelayed)。一个用于启动静音,一个用于结束静音(在SetMuteIntervall中)。 最初的测试似乎有效,但如果我尝试将其静音30分钟,它永远不会取消静音。我认为这与手机处于待机状态有关。我还尝试使用Handler.postAt(),但这也不起作用(相对于正常运行时间的时间有点混乱)

那么,无论手机是否处于待机状态,我应该如何保证我的回拨都会被呼叫

以下是我的节目来源:


尝试使用AlarmManager来计划将来的一些操作。AlarmManager不依赖于待机模式,即使设备处于睡眠状态,也会触发

当手机处于待机模式时,您的线程实际上已停止。如果您仍然想使用线程,您可以使用WakeLock来防止CPU进入待机模式(但仍然要关闭屏幕),但这并不是您的最佳方式