AlarmManager机制和系统唤醒锁的总结

本文探讨了Android中AlarmManager的使用和系统唤醒锁的概念,指出Handler在Service中的潜在问题,并建议使用AlarmManager来定期执行任务以节省电量。同时解释了系统唤醒锁在锁屏时依然工作的情况,强调了WakeLock在关键逻辑执行时的作用,以及释放WakeLock的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

转自 http://blog.youkuaiyun.com/d_clock/article/details/42968039


前段时间,在公司做项目的时候发现原有项目中的代码在Service中使用handler不断发送Message到Looper处理MessageQueue中来维持IM功能的“心跳”,心里瞬间觉得这个地方的代码很不靠谱,主要原因分为两个:

1.handler的生命周期和Service不一致,如果Service某个时刻被系统回收内存杀死了,逻辑上handler应该就会停止心跳包的发送,但是此时实际代码运用中handler依旧可以源源不断的发送消息,而且由于handler持有了外部销毁的Service的引用,造成Service即使被杀但是内存不被回收的内存泄漏问题也是比较严重的;

2.Android官方的API文档建议我们,如果要执行定时任务的话,可以使用AlarmManager来定期执行任务,减少唤醒系统时钟的次数,从而减少电量的消耗;

针对以上问题,做了一下小小了解,因为项目开发中我对于AlarmManager的使用已经相当熟悉,但是对系统唤醒锁的概念还是不是很理解,之前甚至天真的认为,只要锁了屏,系统锁就不会被唤醒,亮屏的时候,系统唤醒锁才重新唤醒。可是想想又不太对,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值