作家
登录

「Android」Bolts-更简单的完成线程调度和任务管理

作者: 来源: 2017-11-22 14:47:18 阅读 我要评论

  1. Task 
  2.         .forResult(URL) 
  3.         // 下载 
  4.         .onSuccess(task -> downloadBitmap(task.getResult()), Task.BACKGROUND_EXECUTOR) 
  5.         // 更新UI 
  6.         .onSuccess(task -> updateUI(task.getResult()), Task.UI_THREAD_EXECUTOR) 
  7.         // 存储UI状况 
  8.         .onSuccess(task -> saveUIState(task.getResult()), Task.BACKGROUND_EXECUTOR) 
  9.         // 提示 
  10.         .onSuccess(task -> toastMsg("save to " + task.getResult()), Task.UI_THREAD_EXECUT 
  11.         // handle error 
  12.         .continueWith(task -> { 
  13.             if (task.isFaulted()) { 
  14.                 task.getError().printStackTrace(); 
  15.                 return false
  16.             } 
  17.             return true
  18.         }); 

线程调剂器

一个关于线程调剂的简单需求,在子线程大年夜收集下载图片,并返回下载的图片,在主线程应用该图片更新到 UI,同时返回当前 UI 的状况 json,在子线程将 json 数据保存到本地文件,完成后在主线程弹出提示,这中心涉及到了 4 次线程切换,同时后面的义务须要前面义务完成后的返回值作为参数。

共有 4 种类型履行线程,将义务分发到指定线程履行,分别是

  1. backgroud - 后台线程池,可以并发履行义务。
  2. scheduled - 单线程池,只有一个线程,重要用来履行 delay 操作。
  3. immediate - 即时线程,如不雅线程调用栈小于 15,则在当前哨程履行,不然代劳给 background 。
  4. uiThread - 针对 Android 设计,应用 Handler 发送到主线程履行。

backgroud

重要用来在后台并发履行多义务

  1. public static final ExecutorService BACKGROUND_EXECUTOR = BoltsExecutors.background(); 

在 Android 平台下根据 CPU 核数创建线程池,其他情况下,创建缓存线程池。

  1. background = !isAndroidRuntime() 
  2.     ? java.util.concurrent.Executors.newCachedThreadPool() 
  3.     : AndroidExecutors.newCachedThreadPool(); 

scheduled

重要用于义务之间做 delay 操作,并不实际履行义务。

  1. scheduled = Executors.newSingleThreadScheduledExecutor(); 

immediate


  1. private static final Executor IMMEDIATE_EXECUTOR = BoltsExecutors.immediate(); 
  2.  
  3. // 关键办法 
  4. @Override 
  5. public void execute(Runnable command) { 
  6.   int depth = incrementDepth(); 
  7.   try { 

      推荐阅读

      外卖平台盯上“无人配送” 规模化落地待解

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践美团外卖此前也推出了“O2O及时配送智能调剂体系”。据其颁布的数据显示,上线该体系后,配送员单均配送时长>>>详细阅读


    本文标题:「Android」Bolts-更简单的完成线程调度和任务管理

    地址:http://www.17bianji.com/lsqh/39148.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)