Android面试深度解析:Activity生命周期与状态保存
需积分: 9 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定制的理解。在面试中,能够详细解释这些概念和实践操作,将体现你的专业技能和经验。
2024-01-25 上传
2022-08-03 上传
2018-04-14 上传
2020-12-24 上传
2015-03-14 上传
2018-06-26 上传
2024-11-05 上传
2024-11-05 上传
2024-11-05 上传
2024-11-05 上传
AndroidNPIC
- 粉丝: 2
- 资源: 19
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全