0

这可能是一个有点愚蠢的问题,但是在 Android 生命周期中,何时是实现每个步骤的最佳部分?我的游戏流程如下:

  1. onCreate 之前:存储在 JSON 文件中的数据在游戏开始时被解析为字符串列表
  2. onCreate:生成基本 UI
  3. onStart/onResume:游戏开始:从列表中随机选择项目,用户选择相应项目继续
  4. 如果用户是正确的,则从列表中选择另一个项目。出现 10 次
  5. 10个项目后,游戏结束并向用户显示分数

这会被认为是好的做法吗?我对生命周期步骤有点困惑

4

2 回答 2

1

可能有助于更多地了解 Android 应用程序的生命周期。以下内容来自该网站:

如上一节所述,一个活动的生命周期有 4 个状态和 3 个生命周期。如果你想监控和添加自己的代码逻辑到一个activity,你可以使用android.app.Activity类提供的以下7个基本回调方法:

  • onCreate() - 首次创建活动时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含活动先前冻结状态的 Bundle(如果有的话)。onCreate() 后面总是跟着 onStart()。

  • onRestart() - 在您的活动停止之后和重新开始之前调用。onRestart() 后面总是跟着 onStart()。

  • onStart() - 当活动对用户可见时调用。onStart() 之后是 onResume() 如果活动进入前台,或者 onStop() 如果它被隐藏。

  • onResume() - 当活动开始与用户交互时调用。此时,您的活动位于活动堆栈的顶部,用户输入将转到它。onResume() 后面总是跟着 onPause()。

  • onPause() - 当系统即将开始恢复之前的活动时调用。这通常用于提交对持久数据的未保存更改、停止动画和其他可能消耗 CPU 的事情等。此方法的实现必须非常快速,因为在此方法返回之前不会恢复下一个活动。onPause() 后跟 onResume() 如果活动返回到前面,或者 onStop() 如果它对用户不可见。

  • onStop() - 当活动不再对用户可见时调用,因为另一个活动已经恢复并覆盖了这个活动。这可能是因为正在启动一项新活动,正在将现有活动带到此活动之前,或者此活动正在被销毁。onStop() 后跟 onRestart() 如果此活动返回与用户交互,或 onDestroy() 如果此活动即将消失。

  • onDestroy() - 在你的活动被销毁之前你收到的最后一个调用。这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

于 2013-02-18T21:46:43.790 回答
0

您如何在 onCreate 之前预加载数据?在调用 onCreate 之前,您没有 Context 对象可以使用应用程序文件系统。这是Activity 生命周期的文档,如您所见, onCreate 是您可以运行代码的第一个方法。

我建议将数据加载放在其他线程中,例如 AsyncTask。

所以:

  1. 生成基本 UI
  2. 开始数据预加载不在主线程中
  3. 加载数据后更新 UI
于 2013-02-18T21:53:51.220 回答