空消息的使用

private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            //得到当前显示的数值
            int number = Integer.parseInt(tv_demo_number.getText().toString());
            switch (msg.what) {
            case WHAT_INCREASE:
                //限制number<=20
                if(number==20) {
                    //设置暂停不能操作
                    btn_demo_pause.setEnabled(false);
                    Toast.makeText(HandlerDemoActivity.this, "已经达到最大值", 0).show();
                    return;
                }

                number++;
                tv_demo_number.setText(number+"");
                //发送增加的延迟消息
                handler.sendEmptyMessageDelayed(WHAT_INCREASE, 1000);
                break;
            case WHAT_DECREASE:
                //限制number>=1
                if(number==1) {
                    //设置暂停不能操作
                    btn_demo_pause.setEnabled(false);
                    Toast.makeText(HandlerDemoActivity.this, "已经达到最小值", 0).show();
                    return;
                }
                number--;
                tv_demo_number.setText(number+"");
                //发送减少的延迟消息
                handler.sendEmptyMessageDelayed(WHAT_DECREASE, 1000);
                break;
            default:
                break;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_handler_demo);
        init();
    }

    private void init() {
        tv_demo_number = (TextView) findViewById(R.id.tv_demo_number);
        btn_demo_increase = (Button) findViewById(R.id.btn_demo_increase);
        btn_demo_decrease = (Button) findViewById(R.id.btn_demo_decrease);
        btn_demo_pause = (Button) findViewById(R.id.btn_demo_pause);

        btn_demo_increase.setOnClickListener(this);
        btn_demo_decrease.setOnClickListener(this);
        btn_demo_pause.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v==btn_demo_increase) {//自动增加  what =1
            //限制Button可操作性
            btn_demo_increase.setEnabled(false);
            btn_demo_decrease.setEnabled(true);
            btn_demo_pause.setEnabled(true);

            //停止减少(移除未处理的减少的消息)
            handler.removeMessages(WHAT_DECREASE);
            //发消息(增加)
            handler.sendEmptyMessage(WHAT_INCREASE);
        } else if(v==btn_demo_decrease) {//自动减少 what=2
            //限制Button可操作性
            btn_demo_increase.setEnabled(true);
            btn_demo_decrease.setEnabled(false);
            btn_demo_pause.setEnabled(true);

            //停止增加(移除未处理的增加的消息)
            handler.removeMessages(WHAT_INCREASE);

            //发消息(减少)
            handler.sendEmptyMessage(WHAT_DECREASE);
        } else if(v==btn_demo_pause) {//暂停

            //限制Button可操作性
            btn_demo_increase.setEnabled(true);
            btn_demo_decrease.setEnabled(true);
            btn_demo_pause.setEnabled(false);

            //停止增加/减少(移除未处理的减少/增加的消息)
            handler.removeMessages(WHAT_INCREASE);
            handler.removeMessages(WHAT_DECREASE);
        }
    }

消息handler message 线程通信 空消息的更多相关文章

  1. Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

    keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...

  2. Android - 消息机制与线程通信

    以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...

  3. Handler实现线程间的通信1

    通过Handler实现线程间的通信,在主线程当中实现Handler的handlerMessage()方法,在WorkerThread中通过Handler发送消息 Handler实现线程间的通信实例: ...

  4. android线程 Handler Message Queue AsyncTask线程模型 线程交互 + 修改Button样式 示例 最终easy整合版

     首先原谅我把文章的标题写的这么长.其实我还嫌弃它短了因为 写不下去了所以我就不写了.因为我实在不知道该怎么定义这篇文章的标题或许应该叫 "乱谈"比较合适. 这样可能还体现了 ...

  5. WCF技术剖析之十七:消息(Message)详解(上篇)

    原文:WCF技术剖析之十七:消息(Message)详解(上篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]消息交换 ...

  6. android 37 线程通信Looper

    安卓程序的主线程也叫UI线程. 工作线程和主线程的差别:安卓主线程已经调用了Looper.prepare()方法了,已经有一个MessageQueue对象了,所以才可以在工作线程用Handler发消息 ...

  7. Android线程通信

    摘要 andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传 ...

  8. 从Handler+Message+Looper源代码带你分析Android系统的消息处理机制

    PS一句:不得不说CSDN同步做的非常烂.还得我花了近1个小时恢复这篇博客. 引言 [转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 作为A ...

  9. Handler 、 Looper 、Message异步消息处理线程机制( hander消息机制原理)

    Handler . Looper .Message 这三者都与Android异步消息处理线程相关的概念. 那么什么叫异步消息处理线程呢? 异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次, ...

随机推荐

  1. git history 记录(上传到 issu-170 )

    一.上传到gitlab 本地issu-170落后git很多,发生冲突的要手动修改. 2000 cd robot_demo_0226_ws/ 2001 ls 2002 cd IGV01-SW-170 2 ...

  2. Spring异步任务处理,@Async的配置和使用

    本文转自http://blog.csdn.net/clementad/article/details/47403185 感谢作者 这个注解用于标注某个方法或某个类里面的所有方法都是需要异步处理的.被注 ...

  3. ios 6.0模拟器页面调出pop窗口消失后无法使用键盘

    ios 6模拟器上,点击事件调用出pop窗口,这个窗口新创建了window,在pop窗口消失的函数中使用了makeKeyWindow,这个是将要显示的window放到最前端.发现 屏蔽这个方法后可以了 ...

  4. Delphi TScrollBar 用于滚动窗口、组件内容

    滚动条组件(TScrollBar)此组件是一个Windows滚动条,用于滚动窗口.组件内容.许多控制有滚动条属性,它们把滚动条作为自己的一部分,对于没有完整滚动条的控制,TScrollBar组件提供了 ...

  5. JAVA微信开发:[17]如何获取所有关注用户

    该方法获取所有关注公共账号的微信用户的openId集合, 再通过openId集合既可以获取所有的用户的信息.   /** * 获取所有的关注用户 * * @return */ public  List ...

  6. AngularJS的Foreach循环示例

    代码下载:https://files.cnblogs.com/files/xiandedanteng/angularJSForeach.rar 代码: <!DOCTYPE HTML PUBLIC ...

  7. C 标准库 - <stdarg.h>

    C 标准库 - <stdarg.h> 简介 stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数. 可变参 ...

  8. Mina、Netty、Twisted一起学(七):公布/订阅(Publish/Subscribe)

    消息传递有非常多种方式.请求/响应(Request/Reply)是最经常使用的.在前面的博文的样例中.非常多都是採用请求/响应的方式.当server接收到消息后,会马上write回写一条消息到clie ...

  9. matplotlib简易新手教程及动画

    做数据分析,首先是要熟悉和理解数据.所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design 点击打开链接 还有一个非常棒的资料  Matplotlib ...

  10. linux 信号屏蔽

    <span style="font-size:18px;">#include <sys/types.h> #include <unistd.h> ...