为了广播ACTION_TIME_TICK
,Android是否会从深度睡眠中唤醒?从实验来看,我认为没有,但我正在寻找一个明确的答案。
我的实验涉及在接收时注册一个简单的BroadcastReceiver
来更新TextView
:
registerReceiver(new BroadcastReceiver() {
int ctr = 0;
@Override
public void onReceive(Context context, Intent intent) {
testView.setText("Time ticks: " + ++ctr);
}
}, new IntentFilter(Intent.ACTION_TIME_TICK));
在4个刻度处,我关闭了屏幕约5分钟,然后将其重新打开,它读取了6个刻度。在13个刻度时,我将屏幕旋转了10分钟,然后将其重新打开,并且刻度数读数为14.无论我多长时间离开手机,这似乎只会增加1-2个刻度,这就是为什么我怀疑它不会在深度睡眠期间播放动作。
答案 0 :(得分:9)
我查看了Android代码。没有这个广播不会唤醒手机。它使用AlarmManager.RTC
类型Alarm
来广播时间变化。
为什么你需要每分钟通知一次?
如何使用AlarmManager.RTC_WAKEUP
类型设置自己的闹钟?
警告:每分钟都会耗尽电量。我建议不要经常这样做,比如每小时。
如果这有用,请告诉我。
灵光
答案 1 :(得分:3)
更好的实验:不是更新手机关闭时无法看到的TextView
,而是通过以下方式写入日志:
Log.v("Tick","Total ticks: " + ++ctr);
当手机处于睡眠状态时,您可以在Logcat中留意这一点。