我正在尝试编写一个应该在给定时间内将手机静音的简单应用。这是我的第一个Android应用程序,但经过几个小时的阅读后,我认为它已接近完成。但它还有一个我无法解决的问题。
我正在使用活动来显示GUI。它有按钮来设置开始和结束时间,以及其他所需的一切。当用户输入所有参数时,它们将被传递给服务。此服务使用一个处理程序对象来注册2个回调(使用Handler.postDelayed)。一个用于启动静音,一个用于结束静音(在SetMuteIntervall中)。 第一次测试似乎有效,但是如果我尝试将它静音30分钟,它就永远不会取消静音。我认为这与移动电话处于或处于待机模式的事实有关。我也尝试使用Handler.postAt(),但这也不起作用(相对于正常运行时间的时间有些令人困惑)。
那么,无论电话是否处于待机状态,我该怎样做才能保证我的回叫被调用?
这是我的计划的来源:
答案 0 :(得分:1)
尝试使用AlarmManager来规划将来的某些操作。 AlarmManager不是待机模式,即使设备正在休眠也会触发。
您的线程实际上已停止,然后手机处于待机模式。如果您仍想使用线程,可以使用WakeLock来防止CPU进入待机模式(但仍然关闭屏幕)但这不是您的最佳方式。