开发者社区> 问答> 正文

异步编程线性化操作

有这么一个场景

一个需要多个步骤的且占用大量时间的I/O操作在App初始化的时候进行。
想请问大家,这么一个操作,是用事件驱动(如Android中的Handler,iOS中的NotificationCenter),还是直接使用回调函数好。

因为这个操作有很多步骤,第一步做好后,开始第二步,第二步完成后,开始第三步,以此类推。因为是I/O操作,所以他们应该都在异步线程里。

现在我所用的方式是在每一个步骤的回调中开始下一步任务,但是这么写感觉很怪异,大家都是怎么做的呢?

展开
收起
a123456678 2016-07-20 15:58:58 1718 0
1 条回答
写回答
取消 提交回答
  • class MyTask extends AsyncTask<Void, Integer, Integer> {
    
        public void doInBackground(Void... params) {
            // step 1
            int resultCode = step1();
            if (resultCode == 0) {
                // 失败
                cancel(true);
                return;
            }
            publishProgress(1);
    
            // ...
        }
    
        public void onCancelled() {
           // 某一步失败了取消
        }
    
        public void onProgressUpdate(Integer... progress) {
           // 自定义的阶段
        }
    }
    2019-07-17 19:59:01
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
为并行图数据处理提供高层抽象/语言 立即下载
典型模型-卷积神经网络入门 从概念原理到应用实现 立即下载
fibjs 模块重构从回调到协程 立即下载