【Android面试】四大组件专题 todo

文章目录

  • 一、Service(含分类、场景、原理、进阶)
    • [1. 请详细对比 started Service(启动服务)与 bound Service(绑定服务)在生命周期、调用方关系、以及销毁条件上的核心区别。](#1. 请详细对比 started Service(启动服务)与 bound Service(绑定服务)在生命周期、调用方关系、以及销毁条件上的核心区别。)
    • [2. Android 中的 Service 按运行级别可分为哪几类?(前台服务、后台服务、绑定服务),请分别说明它们的定义、优先级及适用场景。](#2. Android 中的 Service 按运行级别可分为哪几类?(前台服务、后台服务、绑定服务),请分别说明它们的定义、优先级及适用场景。)
    • [3. 音乐播放器、即时通讯(IM)、文件下载、天气后台更新,这四个典型场景分别应该使用哪种类型的 Service?请说明理由。](#3. 音乐播放器、即时通讯(IM)、文件下载、天气后台更新,这四个典型场景分别应该使用哪种类型的 Service?请说明理由。)
    • [4. 请列举 3 个必须使用前台服务(Foreground Service)的业务场景,并解释为什么这些场景不能用普通后台 Service 或 WorkManager。](#4. 请列举 3 个必须使用前台服务(Foreground Service)的业务场景,并解释为什么这些场景不能用普通后台 Service 或 WorkManager。)
    • [5. WorkManager和Service的区别](#5. WorkManager和Service的区别)
    • [6. 在 Android 5.0 以上,直接使用 startService 可能会遇到什么问题?官方推荐的替代方案及原理是什么?](#6. 在 Android 5.0 以上,直接使用 startService 可能会遇到什么问题?官方推荐的替代方案及原理是什么?)
    • [7. 当一个 Service 处于后台且长时间运行时,它的进程优先级处于哪个层级?系统在内存不足时,回收这类进程的策略是怎样的?](#7. 当一个 Service 处于后台且长时间运行时,它的进程优先级处于哪个层级?系统在内存不足时,回收这类进程的策略是怎样的?)
    • [8. 前台服务必须显示通知,在不同 Android 版本(如 Android 13+)中,对前台服务通知的权限和样式有哪些新要求?](#8. 前台服务必须显示通知,在不同 Android 版本(如 Android 13+)中,对前台服务通知的权限和样式有哪些新要求?)
    • [9. 什么场景下必须使用 bindService() 而不是 startService()?请举例说明客户端(如 Activity)需要与 Service 进行频繁交互的业务场景](#9. 什么场景下必须使用 bindService() 而不是 startService()?请举例说明客户端(如 Activity)需要与 Service 进行频繁交互的业务场景)
    • [10. IntentService 的原理是什么?它有什么优势?为什么现在官方推荐使用 WorkManager 替代它?](#10. IntentService 的原理是什么?它有什么优势?为什么现在官方推荐使用 WorkManager 替代它?)

一、Service(含分类、场景、原理、进阶)

1. 请详细对比 started Service(启动服务)与 bound Service(绑定服务)在生命周期、调用方关系、以及销毁条件上的核心区别。

  • 生命周期 :started Service 由 startService 启动,生命周期为 onCreate→onStartCommand→onDestroy,独立运行;bound Service 由 bindService
    启动,生命周期为 onCreate→onBind→onUnbind→onDestroy,与绑定组件强相关。
  • 调用方关系:started Service 调用方退出后仍可运行;bound Service 随绑定组件销毁而销毁。
  • 销毁条件:started Service 需显式停止;bound Service 所有客户端解绑后销毁。
  • 通信方式:started Service 单向 Intent 传参;bound Service 通过 Binder 双向交互。
  • 使用场景:startedService用于不需要与组件(如Activity)进行通信时,如后台播放音乐、下载等;bindService用于与activity交互,如获取服务状态、数据交互

速记版:started 独立运行,bound 伴生绑定;一个单向传参,一个双向交互。

2. Android 中的 Service 按运行级别可分为哪几类?(前台服务、后台服务、绑定服务),请分别说明它们的定义、优先级及适用场景。

  • 前台服务:用户可感知,需常驻通知,优先级极高,适用于音乐播放、导航、文件下载。
  • 后台服务:用户无感知,优先级中等,适用于数据同步、日志上传,8.0+ 限制严格。
  • 绑定服务:提供交互接口,适用于服务控制、跨进程通信。速记版:前台保活、后台同步、绑定交互。

3. 音乐播放器、即时通讯(IM)、文件下载、天气后台更新,这四个典型场景分别应该使用哪种类型的 Service?请说明理由。

  • 音乐播放器:前台服务,需常驻保活,用户感知强。
  • 即时通讯:前台服务 / 系统推送,保障长连接稳定。
  • 文件下载:前台服务,防止后台被回收。
  • 天气更新:WorkManager,非实时、可延迟,适配系统调度。

4. 请列举 3 个必须使用前台服务(Foreground Service)的业务场景,并解释为什么这些场景不能用普通后台 Service 或 WorkManager。

  • 导航 / 地图:需持续定位播报,后台易被回收,无法保证实时性。
  • 录音 / 录屏:需后台持续工作,普通后台易被系统杀死。
  • 长连接推送:自研推送需保活长连接,WorkManager 无法满足实时性。

速记版:后台需持续工作、实时性要求高的场景,必须用前台。

5. WorkManager和Service的区别

  • WorkManager 是 Android推荐用于执行可延迟、可约束 的后台任务的库,适合执行那些即使应用退出或设备重启也需要完成的任务,比如数据同步、定时清理等。
  • 而 Service 更适合执行需要立即开始并持续运行的任务,比如播放音乐或下载大文件。但在 Android 8 及以上版本中,使用普通Service 会受到后台限制,必须使用前台服务或优先考虑 WorkManager

Android开发中,service就是普通的后台服务,前台服务对应的类是ForegroundService

6. 在 Android 5.0 以上,直接使用 startService 可能会遇到什么问题?官方推荐的替代方案及原理是什么?

Android 5.0 后禁止隐式 Intent 启动 Service ,否则抛异常;替代方案为显式 Intent,指定组件名,提升安全性。

7. 当一个 Service 处于后台且长时间运行时,它的进程优先级处于哪个层级?系统在内存不足时,回收这类进程的策略是怎样的?

  • 后台 Service 进程属于服务进程,优先级低于前台 / 可见进程,高于空进程;
  • 内存不足时系统会回收服务进程,回收后是否重启取决于 onStartCommand 返回值。

8. 前台服务必须显示通知,在不同 Android 版本(如 Android 13+)中,对前台服务通知的权限和样式有哪些新要求?

9. 什么场景下必须使用 bindService() 而不是 startService()?请举例说明客户端(如 Activity)需要与 Service 进行频繁交互的业务场景

10. IntentService 的原理是什么?它有什么优势?为什么现在官方推荐使用 WorkManager 替代它?

相关推荐
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
晨米酱2 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077002 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
CoderYanger2 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法