Rak*_*esh 6 java time multithreading android date
我正在制作一个Android应用程序,在某些活动中显示一个小时分钟和秒钟的计时器.由于秒值将每秒更新一次,我正在考虑制作一个1000毫秒睡眠的线程,在每个周期后它将添加1到秒并更新文本视图.因此,它将计算分钟和小时并更新相应的文本视图.
但是我有一个疑问,线程可靠到足以完成这样的任务,还是我应该使用内置的库函数来在每个周期后获得几秒钟?如果我完全依赖线程计算时间,我有点担心让我的计时器失去同步.
long startTime = 0;
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) Math.round(diff / ((double)1000));
int minutes = (int) Math.round(seconds / ((double)60));
seconds = seconds % 60;
// Use the seconds
timerHandler.postDelayed(this, 500);
}
};
Run Code Online (Sandbox Code Playgroud)
启动计时器 -
startTime = System.currentTimeMillis();
timerHandler.postDelayed(timerRunnable, 0);
Run Code Online (Sandbox Code Playgroud)
停止计时器 -
timerHandler.removeCallbacks(timerRunnable);
Run Code Online (Sandbox Code Playgroud)
暂停 -
timerHandler.removeCallbacks(timerRunnable);
Run Code Online (Sandbox Code Playgroud)
根据您所描述的逻辑,您确实会得到一些漂移,即每个周期可能出现的小错误将累积起来很大。不过,这很容易补救。
只需保留一个变量来保存最后一次触发的时间即可。睡眠完成后,添加1000到最后一次触发时间,计算该时间之前的余数,然后睡眠该时间。这样您可能会偶尔遇到延迟触发,但很快就会得到纠正。
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |