美文网首页
安卓子线程UI线程相关

安卓子线程UI线程相关

作者: camlboy | 来源:发表于2017-04-28 17:27 被阅读32次

首先明确一点,一个线程对应一个Looper,handler使用如下:

public class MainActivity extends AppCompatActivity {

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };
handler.jpg

我们在UI 线程构建handler的时候并没有指定Looper,其实默认的是UI线程所对应的那个MainLooperMianLooper和我们的handler一一对应,实质上我们可以在UI线程中构建多个handler,但是他们共用的是同一个Looper,也就是MainLooper,当我们调用handler.sendMessage(msg);的时候,首先将消息放入messageQuene,然后mainLooper loop到消息之后调用handlemessage方法进行处理。
如若我们想在子线程中创建出来一个handler来处理线程切换呢,之所以会写这篇笔记主要是在看EventBus源码的时候,EventBus会根据我们配置的线程指定方法在对应的线程中运行,EventBus中当我们指定一个事件发生在主线程的时候,我们会判断发送事件在某个线程,如果我们在子线程中发送到UI线程的事件,就需要做线程切换,此时就需要在子线程中构建handler,从而保证方法在UI线程中执行,以下为子线程中构建handler的代码:

new Thread(new Runnable() {  
            public void run() {  
                Handler handler = new Handler(Looper.getMainLooper()){ // 区别在这!!!!  
                    @Override  
                    public void handleMessage(Message msg) {  
                        Toast.makeText(getApplicationContext(), "handler msg", Toast.LENGTH_LONG).show();  
                    }  
                };  
                handler.sendEmptyMessage(1);  
            };  
        }).start();  

当我们再子线程中构建好handler之后就可以指定方法放生在UI 线程中。

相关文章

  • 安卓子线程UI线程相关

    首先明确一点,一个线程对应一个Looper,handler使用如下: 我们在UI 线程构建handler的时候并没...

  • 关于Handler的简单理解

    handler主要用于线程的切换,因为在安卓中,主线程不能进行耗时操作,而子线程不能更新UI,所以当子线程网络请求...

  • AsyncTask原理分析

    AsyncTask在安卓中常用于线程间通信。在子线程执行耗时任务,在主线程更新UI。 AsyncTask内部封装了...

  • Android消息机制

    一:子线程更新UI 安卓是单线程模型,那么子线程中是否能更新UI呢,答案是可以。 我们可以自己给它一个ViewRo...

  • Handler源码分析-手把手带你实现Handler机制核心架构

    什么是Handler安卓SDK中用来处理异步消息的核心类子线程可以通过Handler来通知主线程进行UI更新 Ha...

  • 异步加载-AsyncTask

    安卓主线程不允许访问网络,子线程不允许更新UI,但Android提供一些好用的异步加载的工具。AsyncTask就...

  • Android 多线程(一)

    简介 1. 线程分类 主线程(UI线程) : 处理和界面相关的事情. 子线程 : 处理耗时操作. Android中...

  • Handler机制你需要知道的一切

    1. 前言 安卓在子线程中不能更新UI,所以大部分情况下,我们需要借助Handler切换到主线程中去更新消息.而消...

  • 理解JS 线程,和Android线程

    1,Android开发都知道,UI线程,和子线程; UI线程:可以操作ui界面, 子线程:不可以操作ui界面 2,...

  • Handler

    Handler机制: 是一个消息传递机制,作用是将子线程需要的UI操作,传递到UI线程执行,保证线程安全。 相关类...

网友评论

      本文标题:安卓子线程UI线程相关

      本文链接:https://www.haomeiwen.com/subject/urlazttx.html