还记得你第一次做轮播图时的崩溃吗?图片死活不自动切换,或者切换时卡得亲妈都不认识?又或者,倒计时功能写着写着就内存泄漏了?
别问我是怎么知道的(抹泪)。今天咱们就来深扒Android里这个最常用,却又最容易被“想当然”使用的组件——计时器。
一、计时器:App里的“隐形劳动力”
先别急着敲代码。咱们想想,计时器在App里到底在扮演什么角色?
- 轮播图:每3秒自动滑到下一张美女(哦不,是产品图)
- 消息刷新:微信那个“正在输入…”的鬼畜效果
- 游戏技能CD:亚瑟的一技能还有2秒就好!
- 倒计时:双11秒杀,“还有01:23:45就要开始了!”
看出来没?计时器本质上就是个“时间触发器”——到点了,就捅一下你的代码:“喂,该干活了!”
但在Android这个大江湖里,能干活的时间触发器可不止一个。接下来就请出我们的三位参赛选手!
二、三大计时器,谁是你的Mr. Right?
选手1:老古董Handler —— 基础但靠谱
这哥们是Android里的老前辈了,虽然年纪大,但地位稳如泰山。
它的工作流程是这样的:
// 1. 先雇个保姆(Handler)
private Handler mHandler = new Handler();
// 2. 让保姆定期叫你起床
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
// 这里写你要定期干的事
updateUI(); // 比如更新界面
// 重要!干完活记得再安排下一次
mHandler.postDelayed(this, 1000); // 1秒后再来
}
};
// 3. 开始计时
mHandler.postDelayed(mRunnable, 1000);
// 4. 想停止的时候
mHandler.removeCallbacks(mRunnable);
Handler的内心独白:“年轻人别老想着花里胡哨的,我这一套方法用了多少年,稳定!”
适用场景:简单的UI更新,比如进度条、动画效果。
坑点警告:
- 忘掉
removeCallbacks?恭喜你,内存泄漏大礼包一份! - 在子线程里直接操作UI?Crash正在赶来的路上!
选手2:Timer & TimerTask —— 来自Java的“外来和尚”
这位是Java原生家族派来的代表,在很多Java项目里混得风生水起。
基本操作:
// 搭个班子
private Timer mTimer;
private TimerTask mTimerTask;
private void startTimer() {
mTimer = ne

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



