zoukankan      html  css  js  c++  java
  • Android线程之Looper

      之前已经为大家奉献了关于Handler和Message的使用,本篇我们来了解一下Handler内部的具体使用,本篇主要探讨Looper的在处理Handler的消息机制中起的重要作用,我们知道我们在子线程向主线程发生消息通过sendMessage()方法,Handler处理消息则是通过handMessage()方法,内部的消息传递机制,下面我们一起来探讨一下。

      为了方便大家的理解,这里我以一个日常生活中的例子来为大家介绍一下Handler、Looper的处理细节:例子讲述的是我们开会时,要去上厕所。

      

      看到上面的例子,我想大家对于Looper一定有了一个很好的认识。

      自建Thread类中实现Handler对象:

    public class MainActivity extends Activity {
        
        private Handler firstHandler = new Handler(){
            public void handleMessage(android.os.Message msg) {
                System.out.println("UI------->:"+Thread.currentThread());
            };
        };
        
        class Mythread extends Thread{
            private Handler handler;
            @Override
            public void run() {
    
                Looper.prepare();//创建一个Looper对象
                handler = new Handler(){
                    @Override
                    public void handleMessage(Message msg) {
                        System.out.println("子线程:"+Thread.currentThread());
                    }
                };
                Looper.loop();//通过这个方法循环处理方法
                
            }
        };
    
        private Mythread thread;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            thread = new Mythread();
            thread.start();
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            thread.handler.sendEmptyMessage(1);//在子线程中处理
            firstHandler.sendEmptyMessage(1);//在主线程中处理
            
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }

      LogCat信息:

      

  • 相关阅读:
    POI实现Excel导入数据库数据
    POI对Excel进行读取操作,工具类,便于操作数据
    HAProxy-1.8.20 根据后缀名转发到后端服务器
    Haproxy-1.8.20 编译安装:
    Soat控制HaProxy 动态增减服务器
    Haproxy-1.8.20 根据路径(URI)转发到后端不同集群
    Ansible User 模块添加单用户并ssh-key复制
    Ansible-playbook 安装redis
    二进制安装mysql-5.7.28
    编译安装 nginx -1.14.2
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4466414.html
Copyright © 2011-2022 走看看