Android面试深度解析:Activity生命周期与状态保存

需积分: 9 1 下载量 149 浏览量 更新于2024-09-12 收藏 73KB DOC 举报
"Android面试知识点详解" 在Android开发中,面试经常涉及到对Activity生命周期的理解和管理。以下是关于Activity生命周期的一些核心要点: 1. Activity的生命周期主要包括以下几个关键方法: - onCreate(): 当Activity首次创建时调用,用于初始化界面和数据。 - onStart(): Activity变得对用户可见但可能仍不完全覆盖其他视图时调用。 - onResume(): Activity完全对用户可见,且用户可以与其交互时调用。 - onPause(): 当Activity失去焦点,但仍然部分可见(例如,弹出对话框或另一个Activity覆盖它时)时调用。 - onStop(): 当Activity完全不可见时调用,可能被系统回收。 - onDestroy(): Activity即将被销毁时调用,是生命周期中的最后一个方法。 关于你在问题中提到的AAA,即Activity启动的必调用顺序,通常为onCreate() -> onStart() -> onResume()。 2. Activity的几种常见状态变化及其调用顺序: - 父Activity启动子Activity,子Activity退出,父Activity会经历onPause() -> onStop() -> onRestart() -> onStart() -> onResume()。 - 用户点击Home键,Activity会经历onPause() -> onStop(),可能调用onDestroy()(取决于系统内存压力)。 - 调用finish(),Activity会经历onPause() -> onStop() -> onDestroy()。 - 显示Dialog时,Activity只会经历onPause()(因为Dialog不会完全覆盖Activity)。 - 显示透明或非全屏Activity,主Activity会经历onPause() -> onFreeze()。 - 设备进入睡眠状态,Activity会经历onPause() -> onFreeze()。 3. 保存Activity状态: 当Activity可能被系统回收时,开发者可以通过重写onSaveInstanceState(Bundle outState)方法来保存关键数据。系统会在Activity暂停之前调用此方法,将数据保存到Bundle中。如果Activity被回收,onCreate()方法会接收到这个Bundle(作为参数savedInstanceState),从而能够恢复之前的状态。如果Activity未被回收,onResume()将直接被调用,无需再次执行onCreate()。 4. 将Activity设置为窗口样式: 在AndroidManifest.xml中,针对需要改变样式的Activity,可以添加以下属性: - `android:theme="@android:style/Theme.Dialog"` 使Activity看起来像一个对话框。 - `android:theme="@android:style/Theme.Translucent"` 创建半透明效果,使得Activity背景部分可见。 5. 退出应用程序: 通常不建议通过代码强制退出应用程序,因为Android系统会根据需要自动管理进程。但如果确实需要,可以在主Activity中添加一个退出按钮,然后在按钮的点击事件中调用`finishAffinity()`方法,这将关闭所有同栈Activity并退出应用程序。 了解和掌握这些知识点对于Android开发者来说至关重要,它们不仅涉及基本的Activity管理,还包括对用户交互、数据持久化以及UI定制的理解。在面试中,能够详细解释这些概念和实践操作,将体现你的专业技能和经验。