计时线程Runnable和Handler的结合

利用Runnable和Handler,来创建计时线程

private double recodeTime = 0;// 用于计时
private double econdTime = 0;// 用于计时

private boolean flag=true;

private Thread thread;// 计时线程

private Runnable menuTimeTask = new Runnable() {
        public void run() {
            while (flag) {
                try {
                    Thread.sleep(200);
                    recodeTime += 0.2;
                    econdTime += 0.2;
                    handler.sendEmptyMessage(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    return;
                }
            }
        }

        Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case 1:if (recodeTime > 8) {//计时8秒后进行事务逻辑
//                  do what you like
                            recodeTime=0;
                        }if (econdTime > 16) {
                            econdTime=0;
                            recodeTime=0;
                        }
                    break;
                }
            }
        };
    };

/**
* 打开线程
*/
public void startTheard(){
thread=new Thread(menuTimeTask);
thread.start();
}

/**
* 停止线程
*/
public void stopThread(){
flag = false;
}

 
时间: 2024-08-09 04:30:53

计时线程Runnable和Handler的结合的相关文章

安卓线程相关 HandlerThread Handler Thread Looper Message Runnable

本文由PurpleSword(jzj1993)原创,转载请注明 原文网址 http://blog.csdn.net/jzj1993 安卓主线程(UI线程)是线程不安全的:对UI控件的操作都应在主线程中完成:UI线程不应执行耗时操作,以免程序不响应(即ANR异常) 实现新线程的常用方法(注意要调用start方法启动新线程而不是run方法): 一.定义类,实现Runnable接口 class MyRunnable implements Runnable { /** * 实现接口的run方法 */ @

android线程通信之Handler

android中线程分为两种: 1)系统创建的用于处理UI界面和用户交互事件的主线程 2)自己创建的用于实现其他业务的子线程 UI中的控件是线程不安全的,只能在主线程中操作控件,不能在其他子线程中直接操作控件. 如果想在其他线程中操作主线程中的控件,只能通过发送一个消息告诉主线程去更新界面. 为了便于在线程间发送消息进行通信,android实现了Handler机制. 线程间通过Handler传递消息(Message).Message由一个FIFO的消息队列(MessageQueue)管理. 每个

转 在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()

在子线程中new一个Handler为什么会报以下错误? java.lang.RuntimeException:  Can't create handler inside thread that has not called Looper.prepare()  这是因为Handler对象与其调用者在同一线程中,如果在Handler中设置了延时操作,则调用线程也会堵塞.每个Handler对象都会绑定一个Looper对象,每个Looper对象对应一个消息队列(MessageQueue).如果在创建Ha

在子线程中创建Handler和looper并与主线程进行交互

分析完上面那篇文章,基本理解了handler的实现原理,乘热打铁,这里我们利用handler原理,在子线程中创建一个handler和looper 可能很多面试时候问道,子线程中能不能new一个handler ? 答案是可以的,但是因为主线程系统默认在ActivityThread中已将帮我们创建好一个looper和MessagQueue,我们不需要手动去创建 (手动创建会出错,因为一个线程中默认只运行一个looper和MessageQueue,具体见ThreadLocal代码原理), 而子线程中没

runnable与handler结合使用,其实跟在Thread中的run()中sleep的效果是一样的

这是一种可以创建多线程消息的函数使用方法:1,首先创建一个Handler对象Handler handler=new Handler();2,然后创建一个Runnable对象Runnable runnable=new Runnable(){   @Override   public void run() {    // TODO Auto-generated method stub    //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作    handler.p

System、应用程序进程的Binder线程池和Handler消息循环

首先看一张Android系统启动流程图: 一个进程最重要的两项指标一个是启动了Binder线程池,也就是能够进程Binder进程间通信了.还有一个是启动了Handler消息循环,能够使用了消息循环机制. 1.那么systemserver进程是什么时候实现上面两个机制的呢?见代码: 启动了Binder线程池.是子线程池. public static final void zygoteInit(String[] argv) throws ZygoteInit.MethodAndArgsCaller

线程间通信: Handler , Looper, MessageQueue, Message (完结)

概述:    为了 线程间 通信方便, Handler 机制 通过 Handler 和 Looper, MessageQueue, Message 这些 类 之间的协作, 简化 多线程的开发.  线程的交互 会被封装 到 Message 中, 然后 通过 Handler 的方法 把 消息 放到 MessageQueue 消息队列中, 实现 Handler 机制的线程 都会 调用 Looper 的 loop() 方法, 则 Looper 作为 消息分发者的 作用就体现出来了.  loop() 方法

Android线程处理之Handler总结

上一篇为大家介绍了如何通过Handler对象把Message数据发送到主线程,我想大家一定都已经掌握了,本篇我将以一个例子的方式为大家总结一下Handler的使用,例子是通过Handler实现一个图片自动改变的效果,一般我们都是通过Viewpage来实现这个效果,不过本篇我们就一起来学习一下如何通过Handler实现这个效果吧. 开始之前我们需要准备几张用来更新切换的图片,让后把这些图片放到res下面的drawable-hdpi下就可以了.有了这些我们就可以开始我们的效果实现了: 1.布局文件:

Android线程处理之Handler

上一篇已经简单为大家介绍了一下关于Handler的使用,本篇我们就一起再来探讨一下Handler的高级使用,上一篇我们仅仅是简单的进行UI界面的更新,本篇我们来一起探讨一下如何把子线程的数据发送到主线程进行处理,对于这个问题,我想一定有很多小伙伴困扰过,其实这很简单的,我之前和大家一样感觉在从子线程发送到主线程是不可能的,不过现在可以真正否定我之前的观点了,子线程向主线程发送数据是完全没问题的.好了,废话不多说,下面我们就一起来探讨一下吧. 1.我们通过Handler和Message来完成: /