更新使UI变慢

时间:2015-08-25 12:04:00

标签: objective-c uipageviewcontroller ios9

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

1 个答案:

答案 0 :(得分:1)

如果您确定进度更新导致您遇到麻烦,您只需更新一个代表进度金额的数字 - 在后台 - 然后设置一个计时器来读取数字(s)并在前台执行UI更新。

用户需要多久才能看到更改? ......半秒钟? ......一秒钟?

NSURLSession确实看起来更多"健谈"超过必要。)