UIPageViewController的每个页面包含6个视图,每个视图都包含一个ProgressBar,用于显示在后台运行的下载进度。
每次下载进度都会在0.01秒内更新UI大约1%(这就是我的猜测)。因为我们有6个视图,所以每个页面上的UI都有太多的更新,当你想要导航到另一个页面时,它会使UI非常慢。
我正在使用NSURLSession和NSURLSessionDownloadTask下载文件,然后在主线程上更新UI:
//- on main thread dispatch_async(dispatch_get_main_queue(), ^{ //- update UI ... }
以下是我为每次更新记录的内容,包括时间。
... 2015-08-25 14:42:42.524 MyApp[896:230684] Feedback = On Downloading ... 2015-08-25 14:42:42.543 MyApp[896:230684] Feedback = On Downloading ... 2015-08-25 14:42:42.567 MyApp[896:230683] Feedback = On Downloading ... 2015-08-25 14:42:42.590 MyApp[896:230753] Feedback = On Downloading ... ... 2015-08-25 14:42:44.134 MyApp[896:230753] Feedback = On Unzipping ... 2015-08-25 14:42:44.139 MyApp[896:230753] Feedback = On Unzipping ... 2015-08-25 14:42:44.149 MyApp[896:230753] Feedback = On Unzipping ... 2015-08-25 14:42:44.159 MyApp[896:230753] Feedback = On Unzipping ... ... 2015-08-25 14:42:45.962 MyApp[896:230753] Feedback = On Parsing ... 2015-08-25 14:42:45.964 MyApp[896:230753] Feedback = On Parsing ... 2015-08-25 14:42:45.966 MyApp[896:230753] Feedback = On Parsing ... ... 2015-08-25 14:42:46.071 MyApp[896:230753] Feedback = Finish Parsing Tags XML file 2015-08-25 14:42:46.072 MyApp[896:230753] Feedback = Parse Tags XML file successfully 2015-08-25 14:42:46.072 MyApp[896:230753] Feedback = Handle Package Successfully
反正是为了让它更快?
谢谢,
注意:我正在开发iPad应用程序,XCode7,ios9,objective-C
答案 0 :(得分:1)
如果您确定进度更新导致您遇到麻烦,您只需更新一个代表进度金额的数字 - 在后台 - 然后设置一个计时器来读取数字(s)并在前台执行UI更新。
用户需要多久才能看到更改? ......半秒钟? ......一秒钟?
(NSURLSession
确实看起来更多"健谈"超过必要。)