小智 59
您还可以使用另一种方法在特定时间间隔内更新UI.以上两个选项是正确的,但取决于您可以使用其他方式在特定时间间隔更新UI的情况.
首先为Handler声明一个全局变量,以便从Thread更新UI控件,如下所示
Handler mHandler = new Handler();
Run Code Online (Sandbox Code Playgroud)
现在创建一个Thread并使用while循环来定期使用线程的sleep方法执行任务.
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);
mHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// Write your code here to update the UI.
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
Run Code Online (Sandbox Code Playgroud)
Kir*_*ril 11
可能最简单的事情是:
while(needToDisplayData)
{
displayData(); // display the data
Thread.sleep(10000); // sleep for 10 seconds
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用一个Timer:
int delay = 1000; // delay for 1 sec.
int period = 10000; // repeat every 10 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
displayData(); // display the data
}
}, delay, period);
Run Code Online (Sandbox Code Playgroud)
Andrahu在正确的轨道上定义了一个处理程序.如果您有一个调用更新函数的处理程序,您只需将发送到处理程序的消息延迟 10秒.
通过这种方式,您不需要启动自己的线程或类似的东西,这将导致奇怪的错误,调试和维护问题.
只需致电:
Handler myHandler = new MyUpdateHandler(GUI to refresh); <- You need to define a own handler that simply calls a update function on your gui.
myHandler.sendMessageDelayed(message, 10000);
Run Code Online (Sandbox Code Playgroud)
现在你的handleMessage函数将在10秒后被调用.您可以在更新功能中发送另一条消息,导致整个周期反复运行
小智 7
使用Handler还有另一种方法
final int intervalTime = 10000; // 10 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Display Data here
}
}, intervalTime);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60646 次 |
| 最近记录: |