zoukankan      html  css  js  c++  java
  • 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())。

     1 import java.util.Timer;
     2 import java.util.TimerTask;
     3 
     4 import android.os.Bundle;
     5 import android.os.Handler;
     6 import android.os.Message;
     7 import android.app.Activity;
     8 import android.widget.TextView;
     9 
    10 public class MainActivity extends Activity {
    11 
    12     private Timer timer;
    13     private TimerTask task;
    14 
    15     @Override
    16     protected void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         setContentView(R.layout.activity_main);
    19 
    20         final TextView tv = (TextView) findViewById(R.id.textView);
    21 
    22         final int WHAT = 102;
    23         final Handler handler = new Handler() {
    24             @Override
    25             public void handleMessage(Message msg) {
    26                 switch (msg.what) {
    27                 case WHAT:
    28                     tv.setText(msg.obj + "");
    29                     break;
    30                 }
    31             }
    32         };
    33 
    34         task = new TimerTask() {
    35             @Override
    36             public void run() {
    37                 Message message = new Message();
    38                 message.what = WHAT;
    39                 message.obj = System.currentTimeMillis();
    40                 handler.sendMessage(message);
    41             }
    42         };
    43 
    44         timer = new Timer();
    45         // 参数:
    46         // 1000,延时1秒后执行。
    47         // 2000,每隔2秒执行1次task。
    48         timer.schedule(task, 1000, 2000);
    49     }
    50 
    51     @Override
    52     protected void onStop() {
    53         super.onStop();
    54 
    55         // 暂停
    56         // timer.cancel();
    57         // task.cancel();
    58     }
    59 }
  • 相关阅读:
    小程序查看导航
    PHP计算两个坐标之间的距离
    微信小程序获取位置
    小程序重置index,重置item
    nmap使用教程
    boost checked_delete提升安全性
    转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码
    visual studio 开发linux程序
    stl 比较和boost LessThanComparable
    c++11 auto unique_ptr 等
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5031454.html
Copyright © 2011-2022 走看看