目录:andorid jar/库源码解析

Bolts:

  作用:

    用于链式执行跨线程代码,且传递数据

  栗子:

Task.call(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return true;
}
}, Task.UI_THREAD_EXECUTOR); Task.callInBackground(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return false;
}
}); Task.callInBackground(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return true;
}
}).onSuccess(new Continuation<Boolean, Object>() {
@Override
public Object then(Task<Boolean> task) throws Exception {
if (task.getResult()) {
return null;
} else {
return new Object();
}
}
}, Task.BACKGROUND_EXECUTOR).continueWith(new Continuation<Object, Object>() {
@Override
public Object then(Task<Object> task) throws Exception {
if (task.getResult() == null) {
Toast.makeText(getBaseContext(), "null", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "not null", Toast.LENGTH_SHORT).show();
} return null;
}
}, Task.UI_THREAD_EXECUTOR);

  源码解读:

  在内部通过维护多中 ExecutorService 对象,并且通过串联的方式进行调用。

  并且通过维护内部变量在,在指定流程处,就是特定的,值,值通过Task的对象getResult拿到。

  UIThread

/**
* An {@link java.util.concurrent.Executor} that runs tasks on the UI thread.
*/
private static class UIThreadExecutor implements Executor {
@Override
public void execute(Runnable command) {
new Handler(Looper.getMainLooper()).post(command);
}
}

  BackgroundThread

private BoltsExecutors() {
background = !isAndroidRuntime()
? java.util.concurrent.Executors.newCachedThreadPool()
: AndroidExecutors.newCachedThreadPool();
scheduled = Executors.newSingleThreadScheduledExecutor();
immediate = new ImmediateExecutor();
}

  源码:https://github.com/BoltsFramework/Bolts-Android

  引入:

implementation 'com.parse.bolts:bolts-android:1.2.0'

最新文章

  1. Flask 教程
  2. 数迹学——Asp.Net MVC4入门指南(5):从控制器访问数据模型
  3. Python的高级特性8:你真的了解类,对象,实例,方法吗
  4. 关于ASPCMS标签调用的一些总结
  5. c# 高效率导出多维表头excel
  6. 为什么移动Web应用程序很慢(译)
  7. windows phone 8.0 app 移植到windows10 app 页面类
  8. 微软职位内部推荐-Android Developer
  9. [PWA] 14. Loop cursor
  10. CSS的一些思考(一)
  11. DedeCMS实现自定义表单提交后发送指定QQ邮箱法
  12. Web_0001:关于阿里云防盗链Referer,CDN加速,OSS自定义域名的操作
  13. 微信小程序生成海报分享:canvas绘制文字溢出如何换行
  14. Python- - -函数目录
  15. MongoDB比较两列大小 使用$subtract函数
  16. python之enumerate函数:获取列表中每个元素的索引和值
  17. 了解MySQL联表查询中的驱动表,优化查询,以小表驱动大表
  18. Oracle数据库中 to_date()与24小时制表示法及mm分钟的显示
  19. org.springframework.beans.factory.BeanCreationException: sqlSessionFactory
  20. vue中的双向数据绑定详解

热门文章

  1. 36 Thread 多线程
  2. Array(数组)对象--&gt;lastIndexOf() 方法
  3. [译]使用开发工具来调试 Beta 版 WebView
  4. jQuery+ajax实现滚动到页面底部自动加载图文列表效果
  5. 如何让一张图片变成二值图像?python+opencv图像处理
  6. deepin右键发送博客
  7. python 异步 I/O
  8. linux常用命令--文件和目录
  9. python 工具链 虚拟环境和包管理工具 pipenv
  10. 改善 Python 程序的 91 个建议