Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Android解决CPU休眠Timer不执行

在开发中,有时我们需要在后台循环执行一些操作(比如:定时任务、即时通讯心跳包的发送等)

结果发现手机发生锁屏的操作后,CPU进入休眠,导致TimerTask不工作,直到解锁屏幕CPU被唤醒后,Timer才继续执行

解决方案:

(1)获取电源锁,让CPU不休眠(耗电严重)
(2)使用AlarmManager代替Timer

说明:Android手机有两个处理器,一个叫Application Processor(AP),一个叫Baseband Processor(BP)。AP是ARM架构的处理器,用于运行Linux+Android系统;BP用于运行实时操作系统(RTOS)。AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。

AlarmManager使用代码:

Intent intent = new Intent();
intent.setAction("");
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 1000 * 10, sender);

清单文件注册:

<receiver android:name="">
    <intent-filter>
        <action android:name="" />
    </intent-filter>
</receiver>
上一篇 Android申请电源锁与释放电源锁
下一篇 Android 加载GIF图最佳实践方案