3

背景

我必须将 Roboguice 用于一个应用程序,该应用程序处理许多类的大量注入。

该应用程序还有一个从 RoboSplashActivity 扩展而来的闪屏类。

问题

随着应用程序变得越来越复杂,花在启动屏幕活动上的时间也越来越多,它甚至会在一段时间后显示其内容布局,这意味着用户在出现启动图像之前大约 1-2 秒会看到一个空白屏幕。

我试过的

一开始我以为是因为splash图像太有(因为它有多层图像),所以我尝试设置一个简单的颜色。原来这不是原因。

然后我想可能是该应用程序占用了很多空间,所以我创建了一个相同大小的全新项目,并且运行良好。所以大型应用程序不是启动缓慢的原因。

然后我认为这是 RoboSplashActivity 的错,所以我用一个只显示纯色背景的新活动(而不是扩展活动)替换了它。一段时间后背景显示,几乎与使用 RoboSplashActivity 的时间相同。仍然不是黑屏的原因。

现在我认为这是 Roboguice 的错,我应该以某种方式将其初始化延迟到屏幕上显示某些内容的时间,以便至少用户在加载时会看到某些内容。

问题

是否可以优化 Roboguice 以使其启动时间最短?

也许延迟在其他文件上完成的初始化?

4

1 回答 1

1

我正在使用 Guice,我遇到了同样的问题。我确定您的问题的解决方案非常相似。

花费大量时间的是创建模块中定义的依赖关系图。有很多反思正在进行,分析所有绑定需要一些时间。您需要将依赖注入设置移动到您在 SplashActivity 中启动的单独线程/任务。

由于您使用的是 RoboGuice,因此已经有专门为此设计的活动。看看RoboSplashActivity

更新:我不敢相信我忽略了你写的部分,你已经扩展了 RoboSplashActivity。对于那个很抱歉。正如我在评论中所写:

您是否将 Application 子类化并在那里进行任何依赖注入?

作为启动时间的旁注:您可能需要查看 Stage 设置以控制依赖注入的设置方式。Guice 有三种模式,每种模式都有不同的启动时间。似乎 RoboGuice 具有相同的功能,并且默认为Stage.PRODUCTION

于 2013-05-28T13:27:37.530 回答