andorid jar/라이브러리 소스 분석 Bolts

5422 단어
디렉토리:andorid jar/라이브러리 소스 분석

Bolts:


역할:


크로스 스레드 코드를 체인식으로 실행하고 데이터를 전달하는 데 사용

밤:

Task.call(new Callable() {
            @Override
            public Boolean call() throws Exception {
                return true;
            }
        }, Task.UI_THREAD_EXECUTOR);

        Task.callInBackground(new Callable() {
            @Override
            public Boolean call() throws Exception {
                return false;
            }
        });

        Task.callInBackground(new Callable() {
            @Override
            public Boolean call() throws Exception {
                return true;
            }
        }).onSuccess(new Continuation() {
            @Override
            public Object then(Task task) throws Exception {
                if (task.getResult()) {
                    return null;
                } else {
                    return new Object();
                }
            }
        }, Task.BACKGROUND_EXECUTOR).continueWith(new Continuation() {
            @Override
            public Object then(Task 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);

원본 코드 판독:


내부에서 다중 Executor 서비스 대상을 유지하고 직렬로 호출합니다.
또한 내부 변수를 유지보수함으로써 지정된 절차에서 특정한, 값,값은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'

좋은 웹페이지 즐겨찾기