有这么一个场景
一个需要多个步骤的且占用大量时间的I/O操作在App初始化的时候进行。
想请问大家,这么一个操作,是用事件驱动(如Android中的Handler,iOS中的NotificationCenter),还是直接使用回调函数好。
因为这个操作有很多步骤,第一步做好后,开始第二步,第二步完成后,开始第三步,以此类推。因为是I/O操作,所以他们应该都在异步线程里。
现在我所用的方式是在每一个步骤的回调中开始下一步任务,但是这么写感觉很怪异,大家都是怎么做的呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个其实Android封装了Handler的一个异步类就很好啦。 AsyncTask,你可以直接在doInBackground里面去做这个一个个的步骤,一个步骤完成了可以publishProgress一下。 http://developer.android.com/reference/android/os/AsyncTask.html
每个步骤对应一种状态,完成一个步骤跳入下一个状态即可。类似状态机吧。
对 ios 不熟,所以只列 java 的解决办法
1.如果初始化是前后依赖的,需要顺序执行的可以辅助使用
CountDownLatch2.如果初始化的IO操作没有依赖关系,并允许并行执行
所有这些步骤同步运行,执行完所有步骤之后回调或者notify