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>

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/26/android-solve-cpu-sleep-timer-not-executing/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Android解决CPU休眠Timer不执行
在开发中,有时我们需要在后台循环执行一些操作(比如:定时任务、即时通讯心跳包的发送等) 结果发现手机发生锁屏的操作后,CPU进入休眠,导致TimerTask不工……
<<上一篇
下一篇>>
文章目录
关闭
目 录