1、在定时器执行时,如果是更新UI的,比如进度条,textview显示数字自加等等,都需要采用handler来更新UI,不能在run方法中更新;
2、定时器需要在新的线程中开启执行,不能在主线程中执行
public class MainActivity extends Activity {
Timer timer;int i;
private Handler handler = new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, i+"", 1).show();
JH.gh(MainActivity.this);
textview.setText("" + msg.obj);
return true;
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = (TextView) findViewById(R.id.text);
new Thread(new Runnable() {
public void run() {
startTimer();
}}).start();
}
/**
* 开启定时器�
*/
private void startTimer() {
if (timer == null) {
timer = new Timer();
CheckTask task = new CheckTask();
timer.schedule(task, 1000L,1000L);
}
}
/**
*定时器需要执行的动作
*/
@Override
public void run() {
i++;
Message message = handler.obtainMessage();
message.obj = i;
handler.sendMessage(message);
}
}
}