zoukankan      html  css  js  c++  java
  • Android实现定时器的方法

    package com.lstech.app;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.widget.TextView;
    
    /**
     * handler定时器
     * 
     * 
     */
    public class HandlerActivity 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方法

     
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.widget.TextView;
    
    /**
     * handler定时器使用postDelyed实现
     *  
     */
    public class postDelyedActivity extends Activity {
        TextView tvShow;
        private int i = 0;
        private int DELYED= 1000;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            tvShow = (TextView) findViewById(R.id.tv_show);
            handler.postDelayed(runnable, DELYED); //每隔1s执行
        }
    
        Handler handler = new Handler();
        Runnable runnable = new Runnable() {
    
            @Override
            public void run() {
                // handler自带方法实现定时器
                try {
                    handler.postDelayed(this, DELYED);
                    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.lstech.app;
    
    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;
    
    /**
     * 定时器实现
     *  * 
     */
    public class TimerActivity 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);
            }
        };
    }
  • 相关阅读:
    md测试
    安利好用的小工具及软件(常更新)
    08-无人值守自动批量安装系统(下)
    建立本地yum仓库
    如何知道命令是由哪个服务提供的
    08-无人值守自动批量安装系统(上)
    07-软件管理
    06-时间管理
    05-用户和组以及权限
    04-编辑文本
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6394341.html
Copyright © 2011-2022 走看看