深入理解Android面试核心:Activity生命周期与Intent通信
需积分: 0 96 浏览量
更新于2024-08-04
收藏 24KB DOCX 举报
"这篇博客主要讨论了Android面试中经常被问到的Activity相关知识,包括Activity的生命周期、Activity属性设定、onSaveInstanceState方法以及Intent在Activity间通信的作用。"
在Android开发中,Activity是一个非常核心的概念,它是用户界面的主要构成部分,相当于其他平台上的窗口或视图。面试中,对Activity的深入理解是评估开发者技能的关键点。
一、Activity的生命周期
Activity的生命周期由系统管理,主要包括以下关键方法:
1. `onCreate(Bundle savedInstanceState)`:当Activity首次创建时调用,用于初始化界面布局和数据。
2. `onStart()`:Activity变得对用户可见但不一定是前台活动时调用。
3. `onResume()`:Activity完全可见并处于活动状态,用户可以与其交互。
4. `onPause()`:当Activity即将被其他Activity覆盖但仍在内存中时调用,适合保存临时状态。
5. `onStop()`:Activity不再对用户可见时调用,如切换到其他Activity或屏幕熄灭。
6. `onDestroy()`:Activity将被销毁前调用,可能是系统内存紧张或用户退出。
生命周期的变化受到多种因素影响,如用户操作、系统资源需求等。开发者需要根据这些方法妥善处理资源释放和数据保存。
二、Activity属性设定
通过在AndroidManifest.xml文件中配置Activity,可以设置启动模式、主题、权限等属性,影响Activity的行为。例如,`launchMode`可以设置为单实例(singleInstance)、单任务(singleTask)、单栈顶(singleTop)和标准模式(standard),控制Activity如何在任务栈中创建和管理。
三、onSaveInstanceState方法
当Activity即将被销毁且可能不会恢复时(如系统内存不足),系统会调用`onSaveInstanceState(Bundle outState)`方法,允许开发者保存关键数据到Bundle中。这个Bundle会在Activity重建时通过`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`传递回来,以便恢复之前的状态。
四、Intent的使用
Intent是Android中进行组件间通信的主要手段,可以用来启动Activity、Service,甚至BroadcastReceiver。在Activity之间跳转,Intent通常包含动作(ACTION)、数据(DATA)、类别(CATEGORY)等信息。通过`startActivity(Intent intent)`或`startActivityForResult(Intent intent, int requestCode)`启动新的Activity,并可以通过`setFlags()`设置Intent标志来控制启动行为。
总结来说,理解和熟练运用Activity的生命周期、属性配置、状态保存以及Intent通信是Android开发者必备的基础知识。在面试中,深入讨论这些问题不仅能展示你的专业技能,还能体现你对应用性能优化和用户体验的关注。
2019-10-13 上传
2024-03-04 上传
2021-06-06 上传
2021-10-12 上传
2022-07-05 上传
2021-01-03 上传
2021-01-30 上传
2021-06-05 上传
2022-08-08 上传
郑华滨
- 粉丝: 28
- 资源: 296
最新资源
- RichardRNStudio
- wnl.rar_Java编程_Java_
- word2vec:Google的Python接口word2vec
- :rocket:可定制的圆形/线性进度条软件包,支持动画文本,使用SwiftUI构建-Swift开发
- The Flow Of Time-crx插件
- 可运营的SSL证书在线生成系统源码,附带图文搭建教程
- grb:通过HTTP进行争夺从未如此简单
- vgg19-tensorflowjs-model::memo:Tensorflow.js VGG-19的预训练模型
- vault-kustomization
- composify:将WordPress插件zip文件转换为git存储库,以便composer版本约束正常运行
- 基于C#实现的普通图像读取及遥感图像处理
- student.rar_教育系统应用_Visual_C++_
- matlab哈士奇代码-Husky:沙哑
- PSI In-application Extension-crx插件
- 猫鼬简介:Ejemplo de un ORMbásicocreado con mongosse para mongo
- qtff-2001.zip_文件格式_Visual_C++_