Android面试深度解析:Activity启动模式与生命周期

需积分: 9 3 下载量 64 浏览量 更新于2024-07-29 收藏 420KB DOC 举报
"这篇资料主要涵盖了Android面试中的关键知识点,包括Activity和Task的启动模式以及XML解析技术。同时,还涉及到了Activity的生命周期及其在不同场景下的回调序列。" 在Android开发中,理解和掌握Activity与Task的启动模式是至关重要的。Activity是Android应用的基本组件,而Task则是一个活动栈,用来管理Activity的执行顺序。以下是对四种启动模式的详细解释: 1. **standard**(标准模式):每次启动Activity时,不论当前栈中是否存在该Activity的实例,系统都会创建一个新的实例并将其压入栈顶。这意味着每个Task都可以拥有多个该Activity的实例。 2. **singleTop**(单一栈顶模式):如果目标Activity已经在栈顶,那么系统不会创建新的实例,而是重用栈顶的Activity,并调用它的`onNewIntent()`方法。如果Activity不在栈顶,系统会创建新的实例并压入栈顶。 3. **singleTask**(单一任务模式):这种模式下,系统会检查是否有已存在的Task包含该Activity。如果有,就将Task带到前台并调用Activity的`onNewIntent()`方法;如果没有,系统会创建新的Task并将Activity作为根Activity添加进去。在整个Task中,只会有一个该Activity的实例。 4. **singleInstance**(单例模式):这是最严格的限制,每个Task只能有一个该Activity的实例,并且这个Activity会单独位于一个Task中。其他所有启动到这个Activity的意图都将被放入同一个Task中,即使它们原本属于不同的应用。 关于XML解析,Android提供了三种主要的解析方式: 1. **XmlPullParser**:这是一种事件驱动的解析器,通过迭代读取XML文档,逐个处理开始标签、结束标签、文本等事件。这种方式效率较高,内存占用少,适合处理大型XML文件。 2. **SAX(Simple API for XML)**:同样是事件驱动的解析器,但相比于XmlPullParser,SAX提供了更灵活的控制,可以在解析过程中处理自定义逻辑,但编程相对复杂。 3. **DOM(Document Object Model)**:DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者随机访问任何节点。这种方式方便操作,但对内存要求较高,不适合处理大文件。 Activity的生命周期是Android应用开发者必须理解的核心概念,它包括以下阶段: - **onCreate()**:Activity创建时调用,用于初始化。 - **onStart()**:Activity变得可见但不一定是前台时调用。 - **onResume()**:Activity完全可见并交互时调用,至此Activity进入运行状态。 - **onPause()**:当Activity失去焦点但仍部分可见时调用。 - **onStop()**:Activity完全不可见时调用。 - **onDestroy()**:Activity即将被销毁时调用,可能是最后阶段。 在不同场景下,Activity的生命周期回调序列会有所不同。例如,当父Activity启动子Activity,子Activity退出后,父Activity会经历`onPause()` -> `onStop()` -> `onRestart()` -> `onStart()` -> `onResume()`。而当用户按下Home键,Activity会经历`onPause()` -> `onStop()`,但不会直接调用`onDestroy()`,以便用户能快速恢复之前的状态。按下Back键则会调用`finish()`方法,Activity的状态会变为`Destroy`,再次启动时从`onCreate()`开始。 了解这些基础知识对于准备Android面试至关重要,它们不仅体现了开发者对平台特性的掌握,也是解决实际问题的基础。