在 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);
}
}

更多相关文章

  1. Android文本输入框EditText属性和方法说明
  2. android 输出.txt 文本换行问题
  3. Android Audio代码分析17 - setvolume函数
  4. Android 自定义文本框(带图片)
  5. 【android】说说GestureDetector.OnGestureListener onScroll函
  6. Android下openGL操作矩阵的函数
  7. Android中常用的函数
  8. 捕获Android文本输入框的软键盘完成(Done)按键消息

随机推荐

  1. android 常见死机问题--log分析
  2. android图片上传
  3. Android如何调试程序(一)
  4. Android修改TitleBar标题栏详解
  5. android解析httpresponce内容
  6. 整理Android的列表的一行布局
  7. android四种动画
  8. Android L下载
  9. Android中数据存储的三种方式--基础
  10. Android: 模拟器system分区没有可用空间