当前位置: 移动技术网 > IT编程>移动开发>Android > andorid jar/库源码解析之Bolts

andorid jar/库源码解析之Bolts

2020年05月06日  | 移动技术网IT编程  | 我要评论

男孩的卧室,毕业设计封面,惑心弃妃

目录: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'

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网