安卓构造器

标签 android android-activity android-lifecycle

因此,在编写了一段时间的 android 应用程序(1 个上传到市场,有 3k+ 活跃安装,评分为 4,7)之后,我开始想知道,我怎样才能让我的应用程序更加出色。我意识到,我无法真正添加任何真正新的和改变世界的功能,所以我开始检查性能,以及如何优化几乎所有内容,如何找到最佳的 CPU/内存使用率,等等。

无论如何,我发现 onCreate 会在旋转屏幕的情况下运行,这很合逻辑,但是有一些(大)计算,我肯定不需要在每次旋转后都重做。其中之一是迭代具有 6500 行的 csv,有 4 列,其中 2 列总是包含一些数据,其中 2 列并不总是。带有数据的 2 列将用于自动完成适配器,另外 2 列对于功能是可选的,但仍需要初始化。目前,这是在异步任务中运行,在 onCreate 结束时触发,在我的 HTC Desire S 上需要大约 3 秒,它有一个非常好的 CPU,所以低预算设备在每次旋转后会有更长的初始化时间,这是当然不是我想要的...它不会使 UI 崩溃,但在这些秒结束之前不会有任何自动完成。

所以:我的问题是,我可以用一些单独的方法来做到这一点,例如构造函数(就像在标准 java 中一样),或者这是一种不好的做法,因为 Activity 的特殊生命周期?我的意思是,我以“构造函数”运行的方式实例化我的 Activity ,然后,我的 onCreate 将运行。在旋转的情况下,我的“构造函数”不会再次运行,但 onCreate 会。稳定仍然是我的 nr1 目标。或者,有什么好的方法可以做到这一点?正是为此而创建的东西,我不知道吗?我真的很想在这件事上改进很多,我真的很感激这方面的帮助,最好是有这方面经验的人,但欢迎任何帮助! :)

例如,如果我想以这种方式创建一个新 Activity ,我会这样做:

new MyActivity(some parameters);

所以构造函数运行,结束是这样的:

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

这样,构造函数运行,我的变量将被初始化(不连接到任何 View 等),之后,我的 Activity 可以在必要时随时运行其 onCreate 变量。

如果我的语法有误,请原谅我,我只是快速打字:)

最佳答案

您应该将此逻辑与您的 Activity 分离。有很多方法可以做到这一点,但最终目标是让您的 csv 解析在不同的类中完成,并且此类应该公开有关数据是否已被解析的信息。因此,在 onCreate 中,您调用您的类来获取数据。如果它已经存在,您会立即获得缓存数据。如果这是第一次调用该方法,或者由于某种原因您的缓存已被清理,您可以解析您的 csv 文件并执行您需要的任何计算。

关于安卓构造器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9687508/

相关文章:

java - Android - 调用 "finish()"不会触发 onDestroy

android - 在 Android 上访问系统共享库

android - 如何强制 WebView 将长行文本分成多行?

Android 内存泄漏和垃圾收集

android - 返回键无限循环回到同一 Activity

android - 为什么在调用我的 Activity 的 ondestroy 之后,我仍然看到来自同一个已被销毁的 Activity 的 Toast

android - MediaRecorder 能否在 Android Studio 中将语音保存为 mp3 或 m4a 音频格式文件自动基于文件扩展名?

android - WebRTC 中如何优雅地切换网络?

java - 如何将文本值从 ViewHolder 发送到 ItemTouchHelper 类?

java - 通过任何简单的方法从一个 Activity 中获取值(value)并将值(value)保存到另一个 Activity 中?