Android 开发核心面试题库及解析
一、Android 基础组件与生命周期
1. Activity 的生命周期与状态
Activity 是 Android 应用的核心组件,其生命周期包括以下关键回调:
- onCreate():创建时调用,用于初始化操作。
- onStart():对用户可见前调用。
- onResume():用户可交互时调用,此时 Activity 处于前台。
- onPause():失去焦点但未完全不可见时调用(如弹出对话框)。
- onStop():完全不可见时调用。
- onDestroy():销毁前调用。
- onRestart():从停止状态恢复时调用。
横竖屏切换影响:默认情况下,屏幕方向改变会触发 onDestroy() 和 onCreate(),导致数据丢失。可通过在 AndroidManifest.xml 中配置 android:configChanges="orientation|screenSize" 并重写 onConfigurationChanged() 来避免重建,或保存状态至 onSaveInstanceState()。
2. Service 的启动方式与返回值
Service 分为两种启动模式:
- startService:通过
startService()启动,执行onStartCommand()。服务独立于启动者运行,需手动调用stopService()或stopSelf()停止。 - bindService:通过
bindService()启动,绑定到客户端,执行onBind()。服务随客户端销毁而销毁。
onStartCommand 返回值:
START_STICKY:服务被杀后重启,Intent 为 null。START_NOT_STICKY:服务被杀后不重启。START_REDELIVER_INTENT:服务被杀后重启并重新发送 Intent。
3. BroadcastReceiver 与 SP 存储
- BroadcastReceiver:接收系统或应用广播。静态注册在 Manifest 中,动态注册在代码中。注意内存泄漏风险,应在
onDestroy中注销。 - SharedPreferences (SP):轻量级数据存储。频繁操作会导致文件 IO 阻塞主线程,建议异步写入或使用
apply()替代commit()。SP 适合存少量配置数据,不适合存大量数据(通常限制几 MB),且无事务支持。
4. DVM 与 ART 的区别
- DVM (Dalvik Virtual Machine):旧版 Android 虚拟机,采用 JIT(即时编译),运行时编译字节码,启动快但运行慢。
- ART (Android Runtime):新版默认虚拟机,采用 AOT(预先编译),安装时编译为机器码,运行速度快但安装时间长,占用更多存储空间。


