上一篇
安卓开发
- 行业动态
- 2025-04-22
- 3
安卓开发核心知识点梳理
开发环境搭建
工具/步骤 | 说明 |
---|---|
Android Studio安装 | 官方集成开发环境,需配置JDK(建议11+版本) |
SDK配置 | 下载对应安卓版本SDK(建议最低支持API 21) |
模拟器设置 | 推荐使用AVD管理器创建虚拟设备(分辨率可选1080×1920) |
Gradle配置 | 项目构建工具,注意修改build.gradle 中的依赖版本 |
四大核心组件
组件类型 | 功能特点 | 典型应用场景 |
---|---|---|
Activity | 界面入口 | 主页面展示 |
Service | 后台任务 | 音乐播放/文件下载 |
BroadcastReceiver | 消息接收 | 系统通知监听 |
ContentProvider | 数据共享 | 跨应用数据交换 |
生命周期示例(Activity):
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); // 界面可见未交互 }
数据存储方案对比
存储方式 | 持久性 | 数据量 | 适用场景 |
---|---|---|---|
SharedPreferences | 轻量键值对 | 用户配置/登录状态 | |
SQLite数据库 | 中等结构化数据 | 本地记录查询 | |
内部存储 | 文件型数据 | 缓存图片/日志 | |
Room持久库 | 复杂关系数据 | 多表联查场景 |
SQLite操作示例:
SQLiteDatabase db = getWritableDatabase(); db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)"); Cursor cursor = db.rawQuery("SELECT FROM users", null);
网络请求框架选型
框架 | 特点 | 适用场景 |
---|---|---|
OkHttp | 高效底层库 | 复杂网络协议实现 |
Retrofit | 声明式接口 | 标准REST API调用 |
Volley | 轻量级框架 | 图片加载/短连接 |
HttpURLConnection | 原生API | 简单GET/POST请求 |
Retrofit使用示例:
public interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int id); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .build();
性能优化要点
布局优化:
- 减少嵌套层级(建议不超过4层)
- 使用ConstraintLayout替代嵌套LinearLayout
- 开启布局检查(Android Studio → Tools → Lint)
内存管理:
- 及时释放Bitmap资源(调用bitmap.recycle())
- 避免内存泄漏(使用ApplicationContext代替ActivityContext)
- 弱引用包装(WeakReference)
耗电优化:
- 合理使用JobScheduler/WorkManager
- 蓝牙/GPS等硬件使用时申请必要权限后立即关闭
- 采用Doze模式处理后台任务
测试与发布流程
单元测试:
@Test public void addition_isCorrect() { assertEquals(4, 2 + 2); }
UI测试:
- 使用Espresso编写交互测试
- 典型用例:按钮点击→页面跳转验证
发布准备:
- 生成签名APK(Release模式)
- 开启代码混淆(minifyEnabled true)
- 检查Google Play政策合规性
相关问题与解答
Q1:Fragment的生命周期与Activity有何不同?
A:Fragment比Activity多出onAttach()
和onDetach()
方法,且onCreateView()
专用于创建视图,特别注意在onDestroyView()
中只处理视图相关资源,如需长期保存数据应使用onSaveInstanceState()
。
Q2:如何处理Android 6.0+的运行时权限?
A:使用requestPermissions()
方法申请权限,重写onRequestPermissionsResult()
处理回调,建议封装权限请求工具类,示例:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE); }