安卓开发基础环境搭建
开发工具安装
工具名称 |
用途 |
官网下载地址 |
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实现区域触发式定位