Android——多线程的多种实现方式

1、为什么用多线程?

答:核心思想是为了让程序表现得更加流畅,不阻塞主线程。基础知识:在安卓系统中,主线程又称之为UI线程,它负责渲染视图、对界面进行轮询的监听、分发事件到响应监听器并执行,而在主线程之外的其他线程是不能对视图和界面进行操作的。

 

2、什么是多线程?

答:线程是程序运行的基本单位,只要在主线程外新建线程即可称之为多线程。

 

3、Android多线程实现方式

    我们按从简到繁的顺序来讲,多线程的基础使用方式包括如下几种:

1,handler.post/postDealy(Runnable)

2,view.post/postDealy(Runnable)

3,activity.runOnThread(Runnable)

4,new Thread(runnable).start

    其中,new Thread(runnable).start是新开一个子线程,在非主线程执行。而前三种,都是添加一个线程作为任务的形式,回到主线程执行。而handler.post/postDealy和view.post/postDealy的实现方式其实都是基于handler的消息机制,只不过view.post/postDealy的回调时机是视图绘制完成,这个机制我们可以用来在view.post/postDealy中获取视图最终大小,视图的参数判断等。

    好,我们现在已经知道了多线程的基本使用方法。比如先使用方法4新开一个子线程,在runnable中执行一些耗时操作,最后再通过前三种方法回到主线程来操作视图。而我们也可以简单使用handler.post/postDealy,新加一个线程任务到主线程的工作队列中,达到一个异步的效果,假如你想获取view的最终状态的话,用view.post/postDealy的效果更佳噢。

多线程的复合使用方式以及该如何使用:

1,handler加message,用消息管理,加广播或者eventBus配合使用。这种方式比较灵活,并且都是把runnable加回到主线程的任务中去执行,与视图随时交互。简单来说,这种回到主线程的方式,只能叫异步,而不是真正的多线程。

2,AsyncTask: 为 UI 线程与工作线程之间进行快速的切换提供一种简单便捷的机制。适用于当下立即需要启动,但是异步执行的生命周期短暂的使用场景。

3,HandlerThread: 为某些回调方法或者等待某些任务的执行设置一个专属的线程,拥有自己的looper和消息队列,并提供线程任务的调度机制。

4,ThreadPool: 把任务分解成不同的单元,分发到各个不同的线程上,进行同时并发处理,适用与主线程无关的多任务操作。

5,IntentService: 适合于执行由 UI 触发的后台 Service 任务,并可以把后台任务执行的情况通过一定的机制反馈给 UI。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值