var*_*sha 1 android timer textview
我想每秒更新我的textview.按钮点击我正在调用一种方法,
loopMethod(milli); //suppose milli= 50000 i.e 50 sec.
Run Code Online (Sandbox Code Playgroud)
所以我loopMethod(int m)的如下:
public void loopMethod(int m){
timer=(TextView) findViewById(R.id.timerText);
if(m>=1000){
try {
timer.setText(""+m);//timer is a textview
System.out.println(m);
m=m-1000;
Thread.sleep(1000);
} catch(InterruptedException ex) {
ex.printStackTrace();
}
loopMethod(m);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我期待的是,我的计时器textview应该打印m每秒的值.但我只得到控制台输出,即system.out.println(m)......控制台上的打印值工作正常...但它根本没有更新我的textview
Aji*_*ian 12
您可以使用以下代码:
Runnable updater;
void updateTime(final String timeString) {
timer=(TextView) findViewById(R.id.timerText);
final Handler timerHandler = new Handler();
updater = new Runnable() {
@Override
public void run() {
timer.setText(timeString);
timerHandler.postDelayed(updater,1000);
}
};
timerHandler.post(updater);
}
Run Code Online (Sandbox Code Playgroud)
在这一行:
timerHandler.post(updater);
Run Code Online (Sandbox Code Playgroud)
时间将第一次设定.即,updater将执行.首次执行后,它将在每1秒的时间间隔后发布.它会每隔一秒更新一次TextView.
您需要在活动销毁时将其删除,否则会泄漏内存.
@Override
protected void onDestroy() {
super.onDestroy();
timerHandler.removeCallbacks(updater);
}
Run Code Online (Sandbox Code Playgroud)
希望它会对你有所帮助.
| 归档时间: |
|
| 查看次数: |
9571 次 |
| 最近记录: |