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

  • 相关阅读:
    python之路-笔录3[BOM&DOM&JQuery]
    python之路-笔录2[CSS&JS]
    python 文件读写方式
    python -- 数据可视化(二)
    Django权限机制的实现
    视频云存储使用介绍
    linux安装phantomjs
    基于redis实现分布式锁
    基于数据库实现分布式锁
    分布式锁
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3352851.html
Copyright © 2011-2022 走看看