Android 定时器的实现(一)

来源:互联网 发布:windows装mac双系统 编辑:程序博客网 时间:2024/05/29 17:29

1, Handler 加 Thread 的 sleep 方法

public class MainActivity extends Activity {    private Button mButton;    private MyThread myThread = new MyThread();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButton = (Button) findViewById(R.id.main_view_button);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                myThread.cancel();            }        });        new Thread(myThread).start();    }    Handler handler = new Handler() {        public void handleMessage(Message msg) {            if (myThread.isCancel())                return;            super.handleMessage(msg);        }    };    public class MyThread implements Runnable {        private boolean bCancel = false;        @Override        public void run() {            while (true) {                try {                    if (! isCancel()) {                        // 线程暂停10s                        Thread.sleep(10 * 1000);                        Message message = Message.obtain();                        message.what = 0x001;                        handler.sendMessage(message);                    }                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }        public boolean isCancel() {            return bCancel;        }        public void cancel() {            this.bCancel = true;        }    }}

2, Handler的postDelayed(Runnable, long)方法

public class MainActivity extends Activity {    Handler handler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        handler.postDelayed(runnable, 10 * 1000);    }    Runnable runnable = new Runnable() {        @Override        public void run() {            Log.v(TAG, "do some thing");            handler.postDelayed(this , 10 * 1000);        }    };}

停止计时器

handler.removeCallbacks(runnable);

3. Handler + Timer + TimerTask

public class MainActivity extends Activity {    private final Timer timer = new Timer();    private TimerTask task = new TimerTask() {        @Override        public void run() {            Message message = Message.obtain();            message.what = 0x001;            handler.sendMessage(message);        }    };    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            Log.v(TAG,"handleMessage");            super.handleMessage(msg);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        timer.schedule(task, 10000, 10000);    }}

取消的方法:

timer.cancel()
0 0
原创粉丝点击