【问题标题】:Will TIME_TICK broadcast in deep sleep?TIME_TICK 会在深度睡眠中广播吗?
【发布时间】:2010-11-08 23:25:23
【问题描述】:

Android 是否会从深度睡眠中唤醒以广播ACTION_TIME_TICK?从实验来看,我认为不会,但我正在寻找一个明确的答案。

我的实验涉及注册一个简单的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 个滴答声,这就是为什么我怀疑它在深度睡眠期间没有广播动作。

【问题讨论】:

  • 我遇到了我怀疑是完全相同的问题。您找到任何解决方案/解决方法了吗?

标签: android


【解决方案1】:

我查看了 Android 代码。不,此广播不会唤醒手机。它使用AlarmManager.RTC 类型Alarm 来广播时间变化。

为什么需要每分钟都收到通知?

使用AlarmManager.RTC_WAKEUP 类型设置您自己的闹钟怎么样?

警告:每分钟都这样做会耗尽您的电池电量。我建议少做一次,比如每小时一次。

如果这有帮助,请告诉我。

伊曼纽尔

【讨论】:

  • 我不太清楚我将如何使用它(我不久前放弃了这项工作),但该项目涉及比系统提供的更详细的正常运行时间跟踪。实际上,我认为我更喜欢让它在手机睡着时不发出通知,而只是想对此进行一些确认(因为 API 文档在这一点上还不清楚)。
  • 使用报警管理器可以正常工作。谢谢。我只是想知道这种行为的原因。你找到了。
【解决方案2】:

一个更好的实验:不要更新手机关机时看不到的TextView,而是写入日志:

Log.v("Tick","Total ticks: " + ++ctr);

您可以在手机处于睡眠状态时在 Logcat 中关注这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2014-08-07
    • 2017-09-29
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多