Android 异步方式
Thread
使用 Thread
创建线程是最简单、常见的异步方式,但在实际项目中,它也就只有这个优点了,并不推荐直接使用 Thread 创建线程,主要有以下几点原因:
不易复用,频繁创建及销毁开销大
复杂场景不易使用
HandlerThread
是 Android 提供的一个自带消息循环的线程,它内部使用 串行的方式执行任务,比较 适合长时间运行,不断从队列中获取任务的场景。
IntentService
继承了 Android Service
组件,内部创建了 HandlerThread,相比 Service 是在主线程执行,IntentService 是 在子线程异步执行不占用主线程,而且 优先级比较高,不易被系统 kill。
AsyncTask
AsyncTask
是 Android 提供的工具类,内部的实现是使用了线程池,它比较大的好处是无需自己处理线程切换,但需要注意 AsyncTask 不同版本执行方式不一致的问题。
线程池
java 提供了线程池,在实际项目中比较推荐使用线程池的方式实现异步任务,它主要有以下优点:
易复用,减少线程频繁创建、销毁的时间
功能强大:定时、任务队列、并发数控制等,java 提供了
Executors
工具类可以很方便的创建一个线程池,也可以自己定制线程池
作者:小尘
链接:https://juejin.cn/post/7130110976472383496
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论