Skip to content

Latest commit

 

History

History
116 lines (101 loc) · 4.52 KB

File metadata and controls

116 lines (101 loc) · 4.52 KB

异步任务

包含异步任务执行模块相关的类,详细的使用见后面的说明 * TaskQueue 核心类,对外接口,支持单例使用 * Task 核心类,表示单个异步任务对象 * TaskBuilder 对外接口,链式调用 * TaskCallback 任务回调接口

        // you can use TaskCallable or just Callable
        final TaskCallable<String> callable=new TaskCallable<String>("name") {
            @Override
            public String call() throws Exception {
                final String url="https://github.com/mcxiaoke/Android-Next/raw/master/README.md";
                final NextResponse response=NextClient.get(url);
                return response.string();
            }
        };
        // task callback
        final TaskCallback<String> callback=new SimpleTaskCallback<String>() {
            @Override
            public void onTaskStarted(final String tag, final Bundle extras) {
                // task started, on task execute thread
            }

            @Override
            public void onTaskFinished(final String result, final Bundle extras) {
                // task started, on task execute thread
            }

            @Override
            public void onTaskSuccess(final String result, final Bundle extras) {
                // task success, on main thread
                mTextView.setText(result);
            }

            @Override
            public void onTaskFailure(final Throwable ex, final Bundle extras) {
                // task failure, on main thread
            }
        };
        // add task, execute concurrently
        TaskQueue.getDefault().add(callable,callback,this);
        // add task, execute serially
        TaskQueue.getDefault().addSerially(callable, callback, this);

        // set custom task executor
        TaskQueue.getDefault().setExecutor(executor);
        //  set yes/no check activity/fragment lifecycle
        TaskQueue.getDefault().setEnableCallerAliveCheck(true);
        // save task tag for cancel the task
        final String tag=TaskQueue.getDefault().add(callable,callback,this);
        TaskQueue.getDefault().cancel(tag);
        // cancel the task by caller
        TaskQueue.getDefault().cancelAll(this);
        // cancel all task
        TaskQueue.getDefault().cancelAll();

        // sample for Task helper class
        final String testUrl = "https://api.github.com/users/mcxiaoke";

        Task.create(new Callable<JSONObject>() {
            @Override
            public JSONObject call() throws Exception {
                final String response = NextClient.get(testUrl).string();
                return new JSONObject(response);
            }
        }).callback(new SimpleTaskCallback<JSONObject>() {
            @Override
            public void onTaskSuccess(final JSONObject result, final Bundle extras) {
                super.onTaskSuccess(result, extras);
                Log.v("Task", "onTaskSuccess() result=" + result);
            }

            @Override
            public void onTaskFailure(final Throwable ex, final Bundle extras) {
                super.onTaskFailure(ex, extras);
                Log.e("Task", "onTaskFailure() error=" + ex);
            }
        }).with(this).serial(false).start();

        Task.create(new Callable<JSONObject>() {
            @Override
            public JSONObject call() throws Exception {
                final String response = NextClient.get(testUrl).string();
                return new JSONObject(response);
            }
        }).success(new Success<JSONObject>() {
            @Override
            public void onSuccess(final JSONObject result, final Bundle extras) {
                Log.v("Task", "onSuccess() result=" + result);
            }
        }).failure(new Failure() {
            @Override
            public void onFailure(final Throwable ex, final Bundle extras) {
                Log.e("Task", "onFailure() error=" + ex);
            }
        }).with(this).start();

        TaskBuilder.create(callable) // 设置Callable
         .with(caller) // 设置Caller
         .run(callable) // 设置Callable
         .callback(callback) // 设置TaskCallback
         .success(success) //设置任务成功回调
         .failure(failure) //设置任务失败回调
         .check(false) //设置是否检查Caller
         .dispatch(handler)// 回调方法所在线程,默认是主线程
         .serial(false) // 是否按顺序依次执行
         .on(queue) // 设置自定义的TaskQueue
         .build() // 生成 TaskInfo 对象
         .start(); // 开始运行任务