码迷,mamicode.com
首页 > 移动开发 > 详细

Android--三种实现定时器的方法

时间:2015-11-08 15:08:56      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

方法一:Handler+Thread

handler   处理者,管理者。主要接受子线程发送的数据, 并用此数据配合主线程更新UI.

 

package com.xunfang.handerDemo;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.widget.TextView;  
  
/** 
 * handler定时器 
 *  
 * @author Smalt 
 *  
 */  
public class HanderDemoActivity extends Activity {  
    TextView tvShow;  
    private int i = 0;  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        tvShow = (TextView) findViewById(R.id.tv_show);  
        new Thread(new ThreadShow()).start();  
    }  
  
    // handler类接收数据  
    Handler handler = new Handler() {  
        public void handleMessage(Message msg) {  
            if (msg.what == 1) {  
                tvShow.setText(Integer.toString(i++));  
                System.out.println("receive....");  
            }  
        };  
    };  
  
    // 线程类  
    class ThreadShow implements Runnable {  
  
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            while (true) {  
                try {  
                    Thread.sleep(1000);  
                    Message msg = new Message();  
                    msg.what = 1;  
                    handler.sendMessage(msg);  
                    System.out.println("send...");  
                } catch (Exception e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                    System.out.println("thread error...");  
                }  
            }  
        }  
    }  
} 

方法二:Handler类自带的postDelyed

 

package com.xunfang.handerDemo;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.widget.TextView;  
  
/** 
 * handler定时器使用postDelyed实现 
 *  
 * @author Smalt 
 *  
 */  
public class HanderDemoActivity extends Activity {  
    TextView tvShow;  
    private int i = 0;  
    private int TIME = 1000;  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        tvShow = (TextView) findViewById(R.id.tv_show);  
        handler.postDelayed(runnable, TIME); //每隔1s执行  
    }  
  
    Handler handler = new Handler();  
    Runnable runnable = new Runnable() {  
  
        @Override  
        public void run() {  
            // handler自带方法实现定时器  
            try {  
                handler.postDelayed(this, TIME);  
                tvShow.setText(Integer.toString(i++));  
                System.out.println("do...");  
            } catch (Exception e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
                System.out.println("exception...");  
            }  
        }  
    };  
  
}  

方法三:

Handler+Timer+TimerTask

package com.xunfang.handerDemo;  
  
import java.util.Timer;  
import java.util.TimerTask;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.widget.TextView;  
  
/** 
 * 定时器实现:Handler+Timer+TimerTask 
 *  
 * @author Smalt 
 *  
 */  
public class HanderDemoActivity extends Activity {  
    TextView tvShow;  
    private int i = 0;  
    private int TIME = 1000;  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        tvShow = (TextView) findViewById(R.id.tv_show);  
        timer.schedule(task, 1000, 1000); // 1s后执行task,经过1s再次执行  
    }  
  
    Handler handler = new Handler() {  
        public void handleMessage(Message msg) {  
            if (msg.what == 1) {  
                tvShow.setText(Integer.toString(i++));  
            }  
            super.handleMessage(msg);  
        };  
    };  
    Timer timer = new Timer();  
    TimerTask task = new TimerTask() {  
  
        @Override  
        public void run() {  
            // 需要做的事:发送消息  
            Message message = new Message();  
            message.what = 1;  
            handler.sendMessage(message);  
        }  
    };  
}  

 

 

 

Android--三种实现定时器的方法

标签:

原文地址:http://www.cnblogs.com/zrui513/p/4947101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!