Android生命周期:每个步骤都应该发生

时间:2013-02-18 21:42:54

标签: android android-lifecycle

这可能是一个愚蠢的问题,但是什么时候是Android生命周期中最好的部分来实现每一步?我的游戏流程如下:

  1. 在onCreate之前:游戏开始时,存储在JSON文件中的数据被解析为字符串列表
  2. onCreate:生成基本用户界面
  3. onStart / onResume:游戏开始:从列表中随机选择的项目,用户选择相应的项目以继续
  4. 如果用户是正确的,则从列表中选择另一个项目。发生10次
  5. 在10个项目之后,游戏结束并且分数显示给用户
  6. 这会被视为良好做法吗?我对生命周期步骤感到有点困惑

2 个答案:

答案 0 :(得分:1)

This可能有助于更多地了解Android应用的生命周期。以下是从该网站引用的:

  

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

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

  •   
  • onRestart() - 之后调用   您的活动已经停止,然后再次启动。   onRestart()后面跟着onStart()。

  •   
  • onStart() - 调用时   该活动变得对用户可见。 onStart()之后是   onResume(),如果活动到达前台,或onStop(),如果它   变得隐藏起来

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

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

  •   
  • onStop() - 当活动为no时调用   用户可见的时间更长,因为已恢复其他活动   并涵盖了这一个。这可能是因为一个新的   活动正在开始,现有的活动正在被带到前面   这一个,或者这个正在被摧毁。 onStop()之后是   onRestart(),如果此活动回来与之交互   用户或onDestroy(),如果此活动消失。

  •   
  • onDestroy() -   在您的活动被销毁之前收到的最后一个电话。这个可以   之所以发生,是因为活动正在结束(有人叫   在它上面完成(),或者因为系统正在暂时破坏它   节省空间的活动实例。你可以区分   这两个场景使用了isFinishing()方法。

  •   

答案 1 :(得分:0)

你是如何在onCreate之前预先加载数据的?在onCreate调用之前,没有Context对象可以使用app文件系统。以下是Activity lifecycle的文档,正如您所看到的,onCreate是第一种可以运行代码的方法。

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

所以:

  1. 生成基本用户界面
  2. 开始数据预加载不在主线上
  3. 加载数据后更新UI