【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 小时前
2026年哪个AI改简历最好用
人工智能·chatgpt·面试·求职招聘·职场发展·远程工作
生信研究猿2 小时前
leetcode 101.对称二叉树(不会做)
算法·leetcode·职场和发展
qq_353737542 小时前
网站 Favicon 获取 API 技术实现指南
android
stevenzqzq2 小时前
Android Navigation 组件页面跳转方法说明
android·compose
Kapaseker2 小时前
Compose 响应式布局要变天—入门 FlexBox
android·kotlin
.豆鲨包3 小时前
【Android】HttpURLConnection解析
android·java
亘元有量-流量变现4 小时前
鸿蒙、安卓、苹果音频设备技术深度解析与开发实践
android·wpf·harmonyos·亘元有量·积分墙
List<String> error_P13 小时前
蓝桥杯最后几天冲刺:暴力大法(一)
算法·职场和发展·蓝桥杯
Cosolar13 小时前
大模型工具调用输出JSON:凭什么能保证不出错?
人工智能·面试·llm