zoukankan      html  css  js  c++  java
  • Android 后台线程,timertask实现定期更新时间

    简述:这是一类定时功能的原型,用来在后台线程中运行一些定时的服务,比如定时修改时间

    知识点:

    1. Android多线程的消息通信(handler)

    2. Java中时间的获取,以及String的格式化(SimpleDateFormat)

    3. Android PostDelay 的定期的实现

    4. timertask实现定期更新

    在这里我们就对于handler的方法,开一个新的Thread每隔3秒, 用来定时修改一个TextView的时间。对于timertask,道理也是一样的,调用schedule方法,每隔三秒更新一次。

    1.使用handler的方法:

        protected void updateClock2Time(boolean isChecked)
        {
            if (isChecked) {
                updateCurrentTime = new Thread() {
                    @Override
                    public void run()
                    {
                        SimpleDateFormat formatter = new SimpleDateFormat(
                                "HH:mm:ss");
                        Date curDate = new Date(System.currentTimeMillis());
                        String currentTime = formatter.format(curDate);
                        message = handler.obtainMessage(UPDATE_MY_TV, currentTime);
                        handler.sendMessage(message);
                        // use Handler to control the time
                        handler.postDelayed(this, 3000);
                    }
                };
                updateCurrentTime.start();
            } else {
                handler.removeCallbacks(updateCurrentTime);
            }
        }
        @SuppressLint("HandlerLeak")
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg)
            {
                switch (msg.what) {
                case UPDATE_MY_TV:
                    String currentTime = (String) msg.obj;
                    clock2.setText("Current Time: " + currentTime);
                    break;
                }
            }
        };

    2.使用timertask的方法:

        class MyTimerTask extends TimerTask
        {
            @Override
            public void run()
            {
                SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
                Date date = new Date();
                cTime = format.format(date);
                messageHandler.sendMessage(messageHandler.obtainMessage());
            }
        };
        private Handler messageHandler = new Handler() {
    
            @Override
            public void handleMessage(Message msg)
            {
                clock1.setText("Current Time: " + cTime);
                super.handleMessage(msg);
            }
        };
        protected void updateClock1Time(boolean isChecked)
        {
            if (isChecked) {
                timer = new Timer();
                MyTimerTask task = new MyTimerTask();
                timer.schedule(task, 3000, 3000);
            } else {
                timer.cancel();
            }
        }
  • 相关阅读:
    Charles下载和使用
    C# mvc读取模板并修改上传到web
    nginx 安装
    python 测试:wraps
    Linux下MySQL数据库常用基本操作 一
    myeclipse新建maven项目
    java 数据导入xls
    tomcat允许跨域请求:
    Import Projects from git
    c# DataTable 序列化json
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4189718.html
Copyright © 2011-2022 走看看