android Timer使用方法
16lz
2021-01-23
Timer属性:http://www.apihome.cn/api/java/Timer.html
声明创建:
1 private Timer mTimer; 2 3 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 this.setContentView(R.layout.main); 7 8 timer = new Timer(); 9 timer.schedule(task, 1000, 5000);11 }13 14 TimerTask task = new TimerTask() {15 @Override 16 public void run() {18 Message message = new Message();20 message.what = 1;22 handler.sendMessage(message);24 }26 };27 28 final Handler handler = new Handler() {30 public void handleMessage(Message msg) {32 switch (msg.what) {34 case 1:36 log.e("Timer", "Timer");38 //要实现的功能代码:update();40 break;42 }44 super.handleMessage(msg);46 }48 };49 50 protected void onDestroy() {52 if (timer != null) {54 timer.cancel();56 timer = null;58 }60 super.onDestroy();62 }
最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。
因为timer.schedule(task,5000) 是表示执行一次的任务。
timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行
1 private Handler handler = new Handler( ); 2 3 private Runnable runnable = new Runnable( ) { 4 5 public void run ( ) { 6 7 update( ); 8 9 handler.postDelayed(this,1000); //postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中10 11 }12 13 };14 15 handler.postDelayed(runnable,1000); // 开始Timer16 17 handler.removeCallbacks(runnable); //停止Timer
(转自:http://blog.csdn.net/jincf2011/article/details/6603916)
更多相关文章
- 深入理解Android消息队列原理篇 Looper、Handler
- Android消息队列(三)--多线程与消息处理
- Android 更新UI 只能在主线程?
- 【Android和iOS】快速切换到主线程更新UI
- 主线程中Looper的轮询死循环为何没有阻塞主线程?
- Android内核与主线linux内核的比较(Android对Linux内核的改动你知
- 【Android】从主线程向子线程发消息
- [Android] 任意时刻从子线程切换到主线程的实现
- Android中通过其他线程更新主线程UI