安卓开发基础环境搭建
开发工具安装
工具名称 | 用途 | 官网下载地址 |
Android Studio | 官方集成开发环境(IDE) | developer.android.com/studio |
JDK | Java开发工具包(建议11及以上) | www.oracle.com/java |
Gradle | 构建工具(Android Studio内置) | gradle.org |
SDK配置要点
- API Level选择:最低支持版本建议设置比目标设备覆盖率高的版本(如API 21)
- 核心组件:必须包含Android SDK Build-Tools、Platform-Tools、Emulator
- 依赖管理:通过
build.gradle
文件配置第三方库(如implementation ‘com.google.code.gson:gson:2.8.6’)
核心组件与架构
Activity生命周期
方法 | 触发时机 | 典型用途 |
onCreate() | 首次创建时 | 初始化界面元素 |
onStart() | 即将可见时 | 恢复动画状态 |
onResume() | 获得焦点时 | 启动传感器监听 |
onPause() | 即将失去焦点时 | 暂停视频播放 |
onStop() | 完全不可见时 | 释放媒体资源 |
onDestroy() | 即将销毁时 | 解注册广播接收器 |
Fragment管理
// 动态添加Fragment示例
supportFragmentManager.beginTransaction()
.replace(R.id.container, HomeFragment())
.addToBackStack(null) // 启用返回栈
.commit()
UI设计与布局优化
ConstraintLayout使用技巧
- 约束优先级:水平约束优先于垂直约束可提升布局性能
- Group功能:通过
Barrier
和Guideline
实现复杂布局对齐 - 性能优化:使用
LayoutEditor
的”Analyze Constraints”工具检测冗余约束
RecyclerView性能优化
优化策略 | 实现方式 | 效果提升 |
复用池 | setRecycledViewPool(RecyclerView.RecycledViewPool) | 减少对象创建 |
懒加载 | ScrollListener判断可见区域 | 降低内存占用 |
局部刷新 | Adapter.notifyItemChanged(position) | 避免全量重绘 |
数据存储方案对比
存储类型 | 适用场景 | 数据容量 | 访问速度 |
SharedPreferences | 轻量级键值存储 | <1MB |
SQLite数据库 | 结构化数据持久化 | 无上限 |
Room持久库 | 对象关系映射 | 中等规模 |
DataStore | 原型数据存储 | 小规模 |
网络请求最佳实践
Retrofit+OkHttp组合
// 带缓存拦截器的客户端配置
val client = OkHttpClient.Builder()
.cache(Cache(cacheDir, 10 1024 1024)) // 10MB缓存
.addInterceptor { chain ->
var request = chain.request()
if (!it.isConnected) { // 离线缓存策略
request = request.newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.build()
}
chain.proceed(request)
}
.build()
协程异常处理
viewModelScope.launch {
try {
val data = withContext(Dispatchers.IO) {
apiService.fetchData()
}
handleSuccess(data)
} catch (e: HttpException) {
handleNetworkError(e.code())
} catch (e: JsonParseException) {
showToast("数据解析错误")
}
}
权限管理与适配
运行时权限处理流程
- 在Manifest声明权限(如
<uses-permission android:name="android.permission.CAMERA"/>
) - 调用
ContextCompat.checkSelfPermission
检测授权状态 - 通过
ActivityCompat.requestPermissions
发起申请 - 在
onRequestPermissionsResult
处理回调结果
Android 11适配要点
特性 | 解决方案 |
分区存储 | 使用MediaStore API或Storage Access Framework |
后台限制 | 改用WorkManager处理延迟任务 |
包可见性 | 在Manifest声明<queries> 元素 |
性能优化工具集
工具名称 | 主要功能 | 使用场景 |
Systrace | 系统级性能追踪 | 动画卡顿分析 |
Profiler | CPU/内存/网络监控 | 实时性能调优 |
LeakCanary | 内存泄漏检测 | 开发阶段排查 |
Lint Checks | 静态代码分析 | 编码规范检查 |
【相关问题与解答】
Q1:如何优化RecyclerView的滑动性能?
A:可采取以下措施:

- 开启硬件加速:确保根布局
android:layerType="hardware"
- 使用DiffUtil优化数据更新:
AsyncListDiffer
实现局部刷新 - 避免在onBindViewHolder执行耗时操作:提前计算好布局参数
- 启用垂直方向的overDraw优化:
setHasFixedSize(true)
减少布局重算 - 复杂item使用ConstraintLayout替代嵌套LinearLayout
Q2:如何处理Android 10+的后台位置获取限制?
A:解决方案包括:
- 前台服务定位:将定位请求放在Foreground Service中
- 使用PendingIntent申请临时权限:通过
LocationRequest
设置PRIORITY_HIGH_ACCURACY
- 引导用户手动允许后台权限:跳转到系统设置页(需声明特殊权限)
- 采用地理围栏替代持续定位:通过GeofencingRequest实现区域触发式定位