App下載
話題 首頁 > iOS 開發(fā)手冊 > iOS 開發(fā)手冊話題列表 > 詳情

異步編程線性化操作

精華
smartwolf111 2016-10-21 02:20:34 瀏覽(3047) 回復(fù)(4) 贊(0)
有這么一個場景
一個需要多個步驟的且占用大量時間的I/O操作在App初始化的時候進行。
想請問大家,這個怎么操作,是用事件驅(qū)動(如Android中的Handler,iOS中的NotificationCenter),還是直接使用回調(diào)函數(shù)好。
因為這個操作有很多步驟,第一步做好后,開始第二步,第二步完成后,開始第三步,以此類推。因為是I/O操作,所以他們應(yīng)該都在異步線程里。
現(xiàn)在我所用的方式是在每一個步驟的回調(diào)中開始下一步任務(wù),但是這么寫感覺很怪異,大家都是怎么做的呢?
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

這個問題我也不清楚,等大佬來解決吧。。

要回復(fù),請先登錄 或者注冊