Android计时器实战:Timer、Handler与Chronometer实现
101 浏览量
更新于2024-08-29
收藏 84KB PDF 举报
在Android开发中,计时器是常见的功能需求,本文将详细介绍三种实现Android计时器的方法:Timer、Handler以及利用Chronometer控件。首先,我们来看如何通过Timer类来实现计时功能。
1. 借助Timer实现计时
Timer类在Android中主要用于周期性地执行任务,我们可以创建一个Timer对象并设置一个Task来处理计时操作。在布局文件中,我们创建了一个简单的TextView用于显示计时器的值。以下是如何在Activity中使用Timer的示例:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.chrono);
timerView = (TextView) findViewById(R.id.timerView);
long baseTime = SystemClock.elapsedRealtime();
// 创建一个Timer对象
Timer timer = new Timer();
// 创建一个Task来处理计时逻辑
final TimerTask task = new TimerTask() {
@Override
public void run() {
long currentTime = SystemClock.elapsedRealtime() - baseTime;
int timeInMilliseconds = (int) (currentTime / 1000); // 将毫秒转换为秒
String timeStr = String.format("%02d:%02d", timeInSeconds / 60, timeInSeconds % 60);
timerView.setText(timeStr);
}
};
// 设置计时器间隔,例如1秒后执行一次
long delayMillis = 1000;
timer.scheduleAtFixedRate(task, delayMillis, delayMillis);
}
```
这里,我们设置了计时器在1秒后启动,并且每秒执行一次`run()`方法更新计时显示。
2. 调用Handler.sendMessageDelayed()方法
另一种实现计时器的方式是利用Handler。Handler允许我们在主线程之外执行代码,并且可以通过延时消息来实现定时执行。示例代码如下:
```java
final Handler startTimeHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
long currentTime = SystemClock.elapsedRealtime() - baseTimer;
// ... 更新计时逻辑,类似TimerTask中的操作
sendMessageDelayed(new Message(), delayMillis);
}
}
};
// 在onCreate()中...
sendMessageDelayed(new Message(), delayMillis);
```
这个例子中,`handleMessage()`会在延迟后被调用,从而实现计时更新。
3. 借助Chronometer控件
Chronometer控件是Android内置的专为计时而设计的组件,它具有直观的显示效果,如秒针移动等。在布局中,只需将Chronometer添加到视图中即可。以下是在XML布局中使用Chronometer的示例:
```xml
<Chronometer
android:id="@+id/chronoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="60sp"
android:startOnBoot="true" />
```
在Activity中初始化和开始计时:
```java
Chronometer chronoView = findViewById(R.id.chronoView);
chronoView.start();
```
Chronometer会自动更新并显示计时,无需额外设置延迟或Task。
总结来说,Android计时器的实现有多种方式,Timer适合需要精确控制延时的任务,Handler提供了一种灵活的主线程外处理机制,而Chronometer则提供了直观的用户界面体验。根据具体需求,开发者可以选择合适的方式来实现计时功能。
2021-01-20 上传
2022-07-14 上传
点击了解资源详情
点击了解资源详情
2021-01-20 上传
285 浏览量
2016-09-25 上传
2014-08-19 上传
weixin_38707217
- 粉丝: 3
- 资源: 903
最新资源
- rest-auth-proxy:基于Java的restful ldap-authentication微服务
- tkoopython:适用于Pythontkinter的面向对象的GUI演示的集合
- tApp:使用现代网络技术(HTML,CSS,JavaScript)构建tApp(TogaTech应用)的框架
- aabbtree-2.8.0-py2.py3-none-any.whl.zip
- acbm-predictor-senstivity-analysis:基于动物细胞的肉类(ACBM)成本预测模型的敏感性分析
- CI
- vetmanager-url-getter:通过诊所域名获取完整网址的简单包
- 西门子PLC写的超声波清洗机程序.rar
- Centric-Project:第12团队中心项目
- Python库 | django-mdeditor-widget-1.0.0.tar.gz
- Notes:使用美观的UI做笔记
- nutrition-calculator
- 行业分类-设备装置-一种造纸废水循环利用方法.zip
- tridium-eliwell-plc-webpage:Eliwell PLC的自定义网页
- gimli.units-feedstock:用于gimli.units的conda-smithy存储库
- btw-47.github.io