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

    一、Handler 和 Thread

    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方法

    package com.lstech.app; 
     
    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);
            }
        };
    }
  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/tyjsjl/p/4014285.html
Copyright © 2011-2022 走看看