所以经过一段时间的编程Android应用程序(1上传市场,有3k + Active安装4,7评分),我开始奇怪,我如何让我的应用程序更加棒。我意识到,我无法真正添加任何真正的新功能和世界变化的功能,所以我开始检查表演,如何优化一切,如何找到最好的CPU /内存使用率,等等。

无论如何,我发现oncreate将在旋转屏幕的情况下运行,这是非常逻辑的,但有一些(大)计算,每次旋转后我肯定不需要重做。其中一个通过具有6500行的CSV迭代,具有4列,其中2列始终包含一些数据,其中2个并不总是如此。具有数据的2列将用于自动完成适配器,另一个2对于功能是可选的,但仍需要初始化。目前,这是在ASYNCTASK中运行,在onCreate末尾触发,在我的HTC Desires中大约需要3秒钟,它具有相当良好的CPU,因此较低的预算设备将在每次旋转后更长的初始化时间肯定不是我想要...它不会崩溃UI,但直到秒结束,就不会有任何自动完成。

所以:我的问题是,我可以在一些单独的方法中做到这一点,例如构造函数(如标准java),或者是一个不好的练习,因为活动的特殊生命周期?我的意思是,我实例化了“构造函数”运行的方式,并在此之后,我的oncreate将运行。在旋转的情况下,我的“构造函数”不会再次运行,但increate将会运行。稳定仍将是我的NR1目标。或者,有没有好方法来做这件事?为完全这样创造的东西,我不知道?我真的很想在这件事上提高很多东西,我真的很欣赏这一点,优先从经验中的经验,但欢迎任何帮助! :)

例如,如果我想以这种方式制作新的活动,我会这样做:

new MyActivity(some parameters);
.

所以构造函数运行,它结束了这样的东西:

startActivity(new Intent(context, MyActivity.class));
.

这样,构造函数运行,我的变量将遗失(未连接到任何视图等),之后,我的活动可以随时运行它的oncreate变量。

原谅我如果是错误的语法,我刚脱掉它:)

有帮助吗?

解决方案

您应该将此逻辑与您的活动分开。有很多方法可以做到这一点,但最终目标是在不同的类中完成你的CSV解析,这个类应该公开有关数据是否已经解析的信息。所以,在oncreate中,您称您的课程获取数据。如果已经存在,则立即获得缓存数据。如果这是第一次调用该方法或由于某种原因已清理缓存,则会解析CSV文件并执行所需的任何计算。

其他提示

你可以看看 onretainnonconfigurationInstance 它可以返回在重新创建活动后可以访问的对象..因此,您只需返回一个包含所有处理后的结果的对象以及您在下次检查时检查是否有GetLastNonConfigurationInstance() - 并且唐't重新计算所有内容

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top