启动预加载,请稍后

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动预加载,请稍后相关的知识,希望对你有一定的参考价值。

参考技术A 预加载。
我们在做有很多图片的页面的时候,出于用户体验的角度或是为了节约流量,以及减小服务器压力的角度,通常会将页面进行配置预加载,预加载是为了在页面打开后,能够流畅展示页面效果,对页面上的附件进行预先加载,当所有图片都加载完成,再显示该页面。通常使用预加载,都会有一个loading页面来展示目前附件加载进度,常见于大型的H5动画,优点是加载完成后,页面运行流畅。缺点是,在完整展示页面效果之前,就把所有页面上的附件全部加载出来,耗费的流量和时间比较长。

在应用程序启动时预加载 UITabBar 选项卡时出现问题(崩溃)

【中文标题】在应用程序启动时预加载 UITabBar 选项卡时出现问题(崩溃)【英文标题】:Trouble preloading UITabBar tabs on application launch (crash) 【发布时间】:2014-03-07 03:10:33 【问题描述】:

我在 RSS 新闻阅读器中有 8 个标签。每个选项卡链接到一个导航控制器,该控制器链接到一个包含表视图的 masterViewController。我正在尝试遍历所有选项卡以在启动时预加载其表数据。我在 appDelegate didFinishLaunchingWithOptions 方法中尝试了以下代码:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)

    [navViewController.topViewController view];

但是,每当我启动应用程序时,我都会收到以下错误消息:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI       
objectAtIndex:]: index 2147483647 beyond bounds [0 .. 7]'

这里有什么问题?

【问题讨论】:

这很奇怪......当您调用超出数组中当前内容的索引时会发生该错误。但是,由于您正在执行没有索引的 for 循环,因此它来自该 for 循环是没有意义的……您确定它来自这部分代码吗? 哦,刚刚想到一个可能的原因……一秒…… 【参考方案1】:

我怀疑问题可能是这样的

NSArray *myViewControllers = tabBarController.viewControllers;

正在返回一个 UIViewControllers 数组(我认为应该如此),但您的 for 循环正在寻找 UINavigationControllers。

我不知道你想用那个循环做什么,因为你没有分配或使用 [navViewController.topViewController view]; 做任何事情,但是如果你想访问你的 myViewControllers 数组中的视图控制器的视图, 使用:

for (UIViewController *viewController in myViewControllers)

    variableWhatever = [viewController view];

【讨论】:

我正在关注这个帖子:link,以便在应用程序启动时预加载我所有选项卡的表数据。但是他们的解决方案不起作用,所以我想在我的 masterViewController 而不是 navigationController 上调用“view”。您的解决方案消除了崩溃,但仍然不会导致我的标签页预加载。 总而言之,我只是想遍历我所有的 masterViewControllers,并在它们上调用视图来强制加载每个选项卡的表数据。

以上是关于启动预加载,请稍后的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 启动预加载数据 CommandLineRunner

链接预加载不能避免字体加载重复

乘客:启动预加载器时出错

一种视频预加载的方案

网络关闭的预加载功能

如何使用预加载内存启动应用程序/容器的“n”个实例