Android计时器实战:Timer、Handler与Chronometer实现

4 下载量 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则提供了直观的用户界面体验。根据具体需求,开发者可以选择合适的方式来实现计时功能。