在 Android 平台上,界面元素不能在定时器的响应函数里刷新。
以下这段代码中,mButton 的文本并不变化。
public class AndroidTimerDemo extends Activity {
private Button mButton;
private Timer mTimer;
private TimerTask mTimerTask;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.Button01);
mTimer = new Timer();
mTimerTask = new TimerTask() {
@Override
public void run() {
Log.d("AndroidTimerDemo", "timer");
Calendar cal = Calendar.getInstance();
mButton.setText(cal.toString());
}
};
mTimer.schedule(mTimerTask, 1000, 1000);
}
}
在 Android 平台上,UI 单元必须在 Activity 的 context 里刷新。 为了达到想要的效果,可以使用 Message Handler。在定时器响应函数里发送条消息,在 Activity 里响应消息并更新文本。
public class AndroidTimerDemo extends Activity {
protected static final int UPDATE_TEXT = 0;
private Button mButton;
private Timer mTimer;
private TimerTask mTimerTask;
private Handler mHandler;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.Button01);
mTimer = new Timer();
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case UPDATE_TEXT:
Calendar cal = Calendar.getInstance();
mButton.setText(cal.toString());
break;
}
}
};
mTimerTask = new TimerTask() {
@Override
public void run() {
Log.d("AndroidTimerDemo", "timer");
mHandler.sendEmptyMessage(UPDATE_TEXT);
/*
// It doesn't work updating the UI inside a timer.
Calendar cal = Calendar.getInstance();
mButton.setText(cal.toString());
*/
}
};
mTimer.schedule(mTimerTask, 1000, 1000);
}
}
当不使时删除定时器
mTimer.cancel();
分享到:
相关推荐
总结来说,Android开发中,结合使用时间定时器和Handler可以方便地实现定时任务,比如定时刷新界面或定时验证短信。这种技术在很多应用场景中都是必不可少的,比如实时数据显示、自动刷新数据等。通过熟练掌握和应用...
在Android开发中,定时器(Timer)是一种常用的技术,用于执行特定间隔的任务或者在特定时间点触发某些操作。然而,在实际应用中,特别是在涉及到UI更新的场景,如竞拍类App,定时器可能会引发一些问题,如图片闪烁...
在Android开发中,定时任务是一项常见的需求,例如定时更新数据、自动刷新界面或者模拟后台服务。标题中的"Android定时器"指的就是如何在Android应用程序中实现定时执行特定任务的功能。通常,Android提供了多种方式...
Handler 可以帮助我们在子线程中操作 UI 线程,例如子线程解析数据,解析结束后通知 UI 刷新界面。Handler 也可以实现定时器。优点包括: * 每次循环都是在主线程中操作,避免了子线程和主线程之间的穿插交互。 * ...
在IT领域,定时器(Timer)和进度条(Progress Bar)是两个常见的用户界面元素,它们在各种应用程序中都有广泛的应用。本篇文章将详细探讨这两个概念及其在实践中的运用。 定时器是一种编程机制,用于在特定间隔...
`Timer`类可以用于计划将来某一点或定期执行的任务,而`Handler`则常用于UI线程与后台线程之间的通信,定时刷新界面或者执行某些操作。 【多线程】在Android应用程序中是必不可少的,特别是在处理耗时操作时,如...
- 在商品条目上显示倒计时,使用`TextView`结合自定义格式化逻辑,或者使用第三方库如`android-countdown-timer`来实现。 - 倒计时更新需要考虑到用户界面的主线程安全,使用`runOnUiThread`或`Handler`来避免阻塞...
3. **定时更新**:使用`Handler`和`Runnable`,或者`Timer`定时发送消息,改变旋转角度并触发界面刷新。 描述中还提到了走马灯的半径设置,这可能是指元素在旋转时的视觉范围。可以为每个元素设定一个半径,通过...
在Android开发中,异步刷新UI是至关重要的,它能够保证用户界面的流畅性,避免因为长时间阻塞主线程导致的ANR(Application Not Responding)错误。本篇将详细介绍Asynctask、Handler+Thread以及TimerTask这三种常见...
计时器在各种编程语言和框架中都有实现,例如JavaScript中的`setTimeout`和`setInterval`,Java中的`java.util.Timer`,或者在iOS和Android开发中的各种定时器API。它们用于在指定的时间间隔后执行一段代码,常用于...
总之,这个源码实例为学习如何在Android中使用HelloCharts创建动态刷新的折线图,特别是模拟心电图效果,提供了一个很好的参考。通过深入研究和理解这个实例,开发者不仅可以掌握HelloCharts的基本用法,还能学习到...
同时,对于长列表,可以使用差分更新库(如DiffUtil)来减少不必要的界面刷新。 8. **适配不同的设备和屏幕尺寸**: - 使用dp和sp单位进行布局设计,确保在不同分辨率和屏幕尺寸的设备上都能正确显示。同时,可能...
- UI界面更新:比如倒计时显示,每隔一定时间刷新页面内容。 - 异步操作:在网络请求、数据同步等操作中,计时器常用于超时控制。 - 定时任务:如定时备份、日志清理、计划任务执行。 - 游戏开发:计时器用于控制...
在这个游戏中,`Timer`被用来定期刷新界面,以实现游戏的实时性。开发者可能创建了一个`TimerTask`,在每个周期中调用`invalidate()`来请求界面重绘,从而更新游戏状态。 5. **事件处理**:Android提供了触摸事件...
为了实现轮播效果,可以添加定时器(Timer)或使用第三方库如AutoScrollViewPager,定期改变ViewPager的当前页面。同时,为了增强用户体验,可以添加指示器(Indicator),显示当前选中的页面。 在代码实现过程中,...
3. 方块下落:通过定时器(Timer或Game Loop)控制方块的下落速度,每次迭代更新方块位置。 4. 碰撞检测:检查方块是否可以继续下落,以及与现有方块或底部的碰撞情况。 5. 行消除:当一行被填满时,消除该行并更新...
你可以使用定时器(如GCD的`DispatchSourceTimer`或Android的`Handler`+`Runnable`)来定期改变线条的坐标。每次更新后,视图需要重绘自身以显示变化,这在iOS中通过调用`setNeedsDisplay()`完成,在Android中则调用...
4. **用户界面更新**:将计算得到的倒计时值显示在界面上,这可能涉及到UI组件的更新,如HTML元素的文本内容改变,或者Android/iOS应用的界面刷新。 5. **跨平台兼容性**:如果这是一个跨平台的应用,如Web应用、...
1. 计时器(Timer)与定时器(CountDownTimer):秒表功能的核心是计时机制,Android提供了两种计时工具,一种是`java.util.Timer`类,另一种是`android.os.CountDownTimer`类。前者适合执行周期性的任务,而后者更...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有创意的用户界面。本教程将深入探讨如何创建一个"会走动的时钟",这不仅是一个基本的自定义View,也是一个动态更新的组件,可以实时显示...