当您开始使用C ++或Java之类的语言进行编程时,首先要学习的主要方法是main方法,即在启动应用程序时操作系统将调用的方法。
在Android中,没有这样的主要方法,但是有几种我们的活动方法会在SSOO发生时被调用 重要的事件。 在本章中,我们将深入研究这些事件是什么以及它如何工作。 活动的完整周期 Android。 官方文件 提供了有关此主题的广泛解释,在这里我们将研究最重要的元素以及在处理它们时的一些常见错误。
Android的生命周期遵循以下方案:
生命周期事件
- onCreate(捆绑)
- 代表当 活动已创建。 在Android上创建新活动时,通常会由向导生成此方法,这是我们创建活动所需的一切的地方。 如果先前已将活动数据保存在Bundle对象中,则可以使用它来重新生成它。 通常我们不会使用它。
- onStart()
- 活动将继续到 在屏幕上,尽管不一定可见。 如果从停靠站出发,我们将首先经过onRestart()。
- onRestart()
- 当我们从onStop()调用中获取onStart()之前的内容。
- onResume()
- 活动将开始 回应互动 用户。
- onPause()
- 该活动将 dejar de responseer 与用户互动。
- onStop()
- 活动已完全结束 背景.
- onDestroy()
- 活动 它会被摧毁 和您的资源被释放。
当我们需要实现这些方法之一时,我们将使用以下配置文件将其添加到我们的活动中:
公共类MyActivity扩展了Activity {受保护的void onCreate(捆绑的savedInstanceState){super.onCreate(savedInstanceState); ...}受保护的void onStart(){super.onStart(); ...}受保护的void onRestart(){super.onRestart(); ...}受保护的void onResume(){super.onResume(); ...}受保护的void onPause(){... super.onPause(); } protected void onStop(){... onStop(); } protected void onDestroy(){... super.onDestroy(); }}
重要的是要保持 超类方法调用 以免遇到意外。 必须维护超出我们活动范围的每个事件的任务。 此调用将转到输入事件的开头,然后到输出事件的结尾。 这样,我们将避免意外,因为我们需要但将不受我们控制的活动元素将在使用它们之前创建,然后将其销毁。
我们不必添加所有事件,我们不需要的将使用默认实现。 我们将经常使用的方法-不建议接触其他方法-onCreate,onPause和onRestart。
onCreate的含义很明确:在这里我们将加载所需的资源,视图以及其他所需的资源。 对于输出,我们将重点关注的唯一方法是onPause。 避免使用onStop和onDestroy的原因是我们对它们没有任何控制权。 onPause将在应用程序出现在前台时运行,而其他两个将由操作系统根据您的需要运行。 它们可能永远不会被执行! 这样做是为了避免在从活动转到桌面时重复创建活动的成本,反之亦然,并且操作系统仅在需要时释放使用的资源,并且不必提供服务所有开放的流程。
这意味着我们将假设应用程序将在执行onPause之后死亡,并且它是我们的 最后一次保存数据的机会 我们需要保存并停止使用的服务(例如地理位置)。 如果我们已停止服务,则重新启动它们的适当位置是onRestart。
其他方法我们将不需要使用太多。 我们需要的常见情况是集成第三方库(例如Facebook或Flurry)。 在这些情况下,我们将被要求将我们的活动方法与您的代码相匹配。 例如,要注册Flurry会话,我们将被要求使用onStart方法启动该会话。
一些有用的想法
- 记住每个事件是为了什么。 您将始终需要onCreate,并且经常需要onPause和onResume来停止并重新启动最消耗服务的服务。
- 不要碰其他事件 如果您不需要它的话。
- 不要相信onStop和onDestroy, 他们可能永远不会被称为。 将所需的一切保存在onPause中。
- 避免使用非最终静态变量。 返回时仍然可以加载该应用程序,它们将保留它们留下的值。 如果您别无选择只能使用它们,请务必在返回前台时重置其值。
更多信息 - Android编程基本指南