• Android 比Timer更好方法


    Android中的Timer一般像下面这样写:

    java代码:
    Timer timer = new Timer( );

    TimerTask task = new TimerTask( ) {
    public void run ( ) {
    Message message = new Message( );
    message.what = 1;
    handler.sendMessage(message);
    }
    };

    final Handler handler = new Handler( ) {
    public void handleMessage(Message msg) {
    switch (msg.what) {
    case 1:
    log.e("Timer","Timer");
    update( );
    break;
    }

    super.handleMessage(msg);
    }
    };

    protected void onDestroy ( ) {
    if (timer != null) {
    timer.cancel( );
    timer = null;
    }
    super.onDestroy( );
    }
    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.main);
    timer.schedule(task,1000,5000);
    }


            最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。

            因为timer.schedule(task,5000) 是表示执行一次的任务。 
            timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,
            更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)

    java代码:
    private Handler handler = new Handler( );

    private Runnable runnable = new Runnable( ) {
    public void run ( ) {
    update( );

    handler.postDelayed(this,1000); 
    //postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中
    }
    };

    handler.postDelayed(runnable,1000); // 开始Timer
    handler.removeCallbacks(runnable); //停止Timer

  • 相关阅读:
    ActiveForm
    phpstudy配置虚拟主机
    PHP 二分查找
    mysql group by 用法解析(详细)
    Linux(CentOS)下的apache服务器配置与管理
    ubuntu server sudo出现sudo:must be setuid root 完美解决办法
    VB连接MYSQL数据的方法
    mysql 远程登录及常用命令
    在eclipse上搭建Roku开发环境
    linux ps查进程 kill关闭进程
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3352851.html
Copyright © 2020-2023  润新知