Android计时器TimerTask,Timer,Handler
Android计时器TimerTask,Timer,若要在TimerTask中更新主线程UI,鉴于Android编程模型不允许在非主线程中更新主线程UI,因此需要结合Android的Handler实现在Java的TimerTask中更新主线程UI。
现给出一个简单示例。代码使用标准Java的TimerTask和Timer启动一个计时器Task。该任务每隔2秒更新主线程的UI(在主线程的TextView显示最新的系统时间:System.currentTimeMillis())。
package zhangphil.timertask; import java.util.Timer; import java.util.TimerTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Activity { private Timer timer; private TimerTask task; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView tv = (TextView) findViewById(R.id.textView); final int WHAT = 102; final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case WHAT: tv.setText(msg.obj + ""); break; } } }; task = new TimerTask() { @Override public void run() { Message message = new Message(); message.what = WHAT; message.obj = System.currentTimeMillis(); handler.sendMessage(message); } }; timer = new Timer(); // 参数: // 1000,延时1秒后执行。 // 2000,每隔2秒执行1次task。 timer.schedule(task, 1000, 2000); } @Override protected void onStop() { super.onStop(); // 暂停 // timer.cancel(); // task.cancel(); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。