话题 首页 > iOS 开发手册 > iOS 开发手册话题列表 > 详情

异步编程线性化操作

精华
smartwolf111 2016-10-21 02:20:34 浏览(3011) 回复(4) 赞(0)
有这么一个场景
一个需要多个步骤的且占用大量时间的I/O操作在App初始化的时候进行。
想请问大家,这个怎么操作,是用事件驱动(如Android中的Handler,iOS中的NotificationCenter),还是直接使用回调函数好。
因为这个操作有很多步骤,第一步做好后,开始第二步,第二步完成后,开始第三步,以此类推。因为是I/O操作,所以他们应该都在异步线程里。
现在我所用的方式是在每一个步骤的回调中开始下一步任务,但是这么写感觉很怪异,大家都是怎么做的呢?
ios android

回答(4)

2016-10-21

这个其实Android封装了Handler的一个异步类就很好啦。 AsyncTask,你可以直接在doInBackground里面去做这个一个个的步骤,一个步骤完成了可以publishProgress一下。http://developer.android.com/reference/android/os/AsyncTask.html

class MyTask extends AsyncTask {


    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) {
       // 自定义的阶段
    }
}
一笔荒芜 2018-05-31

好慢呀,空空如也,半天不来大神解决,大佬在哪啦

1144100656 2018-05-31

大神在哪里呀,大神在哪里呀,大神在哪里呀.

1152696398 2018-05-31

这个问题我也不清楚,等大佬来解决吧。。

要回复,请先登录 或者注册