Android面试深度解析:Activity、Fragment、Broadcast与Service

需积分: 5 7 下载量 33 浏览量 更新于2024-08-03 1 收藏 24KB DOCX 举报
"这份文档包含了2024年最新的Android面试题目,涵盖了Activity与Fragment的通信方式、LaunchMode的应用场景、BroadcastReceiver与LocalBroadcastReceiver的区别、对Context的理解、IntentFilter的含义及其使用场景,以及startService和bindService的差异、生命周期和适用场景等核心Android开发知识点。" 1. Activity与Fragment之间的通信方式: - 使用Intent: Intent不仅用于启动Activity,也可以在Activity和Fragment之间传递数据。例如,当需要从Fragment启动一个新的Activity时,可以通过Intent携带数据。 - 使用Bundle: Bundle作为数据容器,可以存储基本类型的数据和Parcelable/Serializable对象,通过setArguments()和getArguments()方法在Activity和Fragment之间传递数据。 - 接口回调: 定义一个接口,Activity实现此接口,Fragment调用接口方法,以此达到双向通信。 - 观察者模式: Fragment注册为Activity的观察者,当Activity的状态发生变化时,Fragment接收到通知并作出相应。 - 使用ViewModel: ViewModel负责存储Activity和Fragment的共享数据,即使在配置改变(如屏幕旋转)时,数据也能保持。 2. LaunchMode的应用场景: - Standard: 默认模式,每次启动都会创建新的实例,适合大多数Activity。 - SingleTop: 如果新的实例位于栈顶,那么将重用现有实例,通常用于通知入口页面,避免重复创建。 - SingleTask: 只有一个实例存在,新启动的Activity会替换栈内所有实例,常用于应用主页面,保持唯一实例。 - SingleInstance: 创建单独的任务栈,用于不希望被其他Activity干扰的场景,如闹钟提醒页面。 3. BroadcastReceiver与LocalBroadcastManager的区别: - BroadcastReceiver: 全局广播接收器,可以在任何组件中接收广播,但效率较低且容易受到权限限制。 - LocalBroadcastManager: 应用内部广播,只在应用内部广播,效率高且安全,适合处理私有数据和事件。 4. 对于Context的理解: - Context是Android系统的核心组件,提供了访问系统服务、资源和应用程序环境的方法。常见的Context类型有Application、Activity和Service,它们有不同的生命周期和作用范围。 5. IntentFilter及其使用场景: - IntentFilter用于定义一个Intent可以匹配哪些类型的动作、数据和类别。它主要用于BroadcastReceiver注册,使得BroadcastReceiver可以接收特定类型的Intent。 - 使用场景包括:接收系统广播(如网络状态变化)、启动服务(指定服务能处理哪些Intent)、启动Activity(指定Activity可以处理哪些Intent)等。 6. startService和bindService的区别、生命周期及使用场景: - startService: 创建服务并执行onStartCommand(),服务在后台运行直到stopSelf()或stopService()被调用。适用于长时间运行任务,如后台音乐播放、定时任务等。 - bindService: 连接到服务,执行onBind(),提供客户端与服务之间的接口进行交互。服务在客户端连接时启动,断开连接时销毁,适合需要实时通信和服务生命周期管理的场景。 以上知识点是Android开发者面试中常见的问题,深入理解这些概念和技术对于提升开发能力和解决实际问题至关重要。