Android 开发工程师 70 道核心技术面试题整理与解析
前言
本文整理了 Android 开发中常见的 70 道技术面试题,涵盖 Activity、Service、Broadcast、Handler、View 绘制等核心模块。旨在帮助开发者梳理知识体系,应对面试中的技术考察。
正文:技术面试题
1. Activity 生命周期?
标准流程为:onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()。
注意:从前台切换到后台可能只经历 onPause/onStop,返回前台则经历 onResume/onStart。
2. Service 生命周期?
Service 启动方式有两种:
- startService():生命周期为
onCreate()->onStartCommand()->onDestroy()。多次调用 startService 只会执行一次 onCreate,但 onStartCommand 会多次执行。需判断 Intent 是否为 null。 - bindService():生命周期为
onCreate()->onBind()->onUnbind()->onDestroy()。适合需要交互的场景,通过 ServiceConnection 获取 Binder 对象调用方法。 混合使用时,当所有客户端解绑且服务未启动时才会销毁。
3. Activity 的启动过程(不要回答生命周期)
- 点击图标或 startActivity 触发系统调用
ActivityManagerService(AMS)。 - AMS 检查权限和组件配置,创建 ActivityRecord。
- 通知 ApplicationThread 启动 Activity。
- 主线程 Handler 发送消息,调用
handleLaunchActivity。 - 最终调用 Activity 的生命周期方法。
4. Broadcast 注册方式与区别
- 静态注册:在 AndroidManifest.xml 中注册。不受页面生命周期影响,可开机自启,但占用资源,优先级较低。
- 动态注册:代码中 registerReceiver。受生命周期影响,退出后失效,不泄露内存风险低,优先级较高,需手动 unregister。 广播分为有序和无序广播。
5. HttpClient 与 HttpUrlConnection 的区别
- HttpClient:API 丰富但较重,Android 6.0 已弃用。
- HttpUrlConnection:轻量级,基于流,支持 HTTPS/IPv6,Google 推荐。Volley 框架 2.3 后改用 HttpUrlConnection。
6. 讲解一下 Context
Context 是上下文环境抽象基类。
- 子类:ContextWrapper(封装), ContextImpl(实现)。
- 类型:Application, Activity, Service。
- 场景:启动 Activity 或弹出 Dialog 必须使用 Activity 类型的 Context,否则报错。其他场景通常通用。
- 数量:Context 数量 = Activity 数量 + Service 数量 + 1(Application)。


