美文网首页
2018-07-23 Android 多线程编程

2018-07-23 Android 多线程编程

作者: 灼灼其华_b157 | 来源:发表于2018-07-24 10:55 被阅读0次

前面我写过一篇文章简要介绍了一下Java多线程,今天来讲一下Android多线程,其实Android多线程和Java多线程基本是一样的,基本都使用相同的语法,例如

1.通过类继承Thread类实现多线程,重写run()方法

启动该线程的办法也很简单,只要new MyThread().start(); new 出类的实例,调用start()方法

2.通过类实现Runnable接口

这样的话启动线程的办法就会改变

MyThread   myThread   =  new Mythread();

new Thread(myThread).start();

Thread构造方法接收一个Runnable参数,而我们的MyThread对象传入Thread,再调用start()方法

3.如果不想再定义一个专门的类去实现Runnable接口,也可以使用匿名类的方式,这种写法更为常见,前面我们学习Http的两种方式中,在开启线程的时候使用的就是匿名类的办法

二.在主线程更新UI

Android的UI也是线程不安全的,如果想要更新应用程序的UI,必须在主线程进行,否则就会出现异常

Android异步消息处理机制

异步处理机制有四个重要的部分组成

1.Message

Message是在线程中传递的信息,他可以携带少量的数据,用于在不同线程中交换数据

2.Handler

顾名思义,Handler是处理者的意思,他主要用于发送和处理消息,发送消息是使用Handler的

sendMessage()方法,发出的消息在经过一系列的辗转之后,最终传递到Handler的handleMessage()方法之中

3.MessageQueue

MessageQueue是消息队列的意思,每个经过Handler发送的消息都会存放在MessageQueue中等待被处理

每个线程中只会有一个MessageQueue对象

4.Looper

Looper是MessageQueue的消息管家,每当MessageQueue中有带处理的消息时,Looper都会调用loop()方法(无限循环),将MessageQueue中的消息传入handleMessage()方法之中,且每个线程中也只有一个Looper对象

过程:首先需要通过Handler创建一个对象,并重写handleMessage()方法,在子线程要进行UI操作时,创建Message对象,通过Handler将这条消息发送出去(Message的功能就是在线程中传递信息),发送出去的消息自然就存放在MessageQueue消息队列里面,等待Looper的loop()方法来去除消息传给handleMessage()方法,且Handler是在主线程创建的,则handleMessage()方法也是在主线程完成的,这样就可以安心的进行UI操作了

 异步消息处理流程图

使用AsyncTask可以直接更方便的对线程进行操作

相关文章

  • Android消息机制(六) 总结

    参考Android线程的正确使用姿势Android性能优化典范之多线程篇 Android多线程编程的总结Andro...

  • 关于并发编程的博客收藏

    Android并发编程 开篇http://ddrv.cn/a/23502/ Android并发编程 多线程与锁ht...

  • 2018-07-23 Android 多线程编程

    前面我写过一篇文章简要介绍了一下Java多线程,今天来讲一下Android多线程,其实Android多线程和Jav...

  • 育人书籍大全

    android 0-3年 android编程、设计模式、重构、多线程编程 3-5年 一线架构师编程实践、ap...

  • android开发 之 Bolts-Android

    目录 多线程编程对比:-iOS与Android Bolts-AndroidTasksChaining-TasksT...

  • Android多线程基础

    线程的基本用法 Android多线程编程并不比Java多线程编程特殊,基本都是使用相同的语法。那么如何创建一个线程...

  • 《java多线程编程核心技术》读书笔记

    最近读完了《java多线程编程核心技术》(高洪岩)、《Android高性能编程》(叶坤 译)、《Java REST...

  • POSIX线程 (一)

    POSIX POSIX是一种标准,例如有多线程编程标准、网络编程标准等。Android NDK的线程是通过POSI...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

  • Android多线程编程

    1.在子线程中更新UI Android中更新UI元素,必须在主线程中进行,否则就会出现异常。 运行以上程序,你会发...

网友评论

      本文标题:2018-07-23 Android 多线程编程

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