通信方式 | 特点 | 适用场景 |
---|---|---|
HTTP/HTTPS | 基于请求-响应模型,支持GET/POST等方法,兼容所有服务器语言 | REST API、文件上传/下载 |
WebSocket | 全双工通信,持久连接,低延迟 | 实时聊天、股票行情推送 |
TCP/UDP Socket | 直接封装TCP/UDP协议,需处理底层连接逻辑 | 自定义协议、音视频流传输 |
MQTT | 轻量级物联网协议,支持主题订阅,适合高并发低带宽环境 | 智能家居、消息推送 |
格式 | 特点 | 示例工具 |
---|---|---|
JSON | 轻量级文本格式,人类可读,广泛支持 | Gson、FastJson、Moshi |
Protobuf | 二进制格式,高性能,体积小,需定义.proto文件 | Protocol Buffers |
XML | 结构化强但冗余,常用于SOAP协议 | PullingParser、DOM解析器 |
MessagePack | 二进制高效序列化,跨语言支持 | MessagePack for Java |
库名称 | 特点 | 适用场景 |
---|---|---|
OkHttp | 支持同步/异步请求,连接池复用,扩展性强 | 复杂网络操作、文件下载 |
Retrofit | 基于OkHttp,通过注解生成API接口,强类型安全 | RESTful API调用 |
Volley | 内置缓存机制,适合小数据量请求,自动排队 | 列表数据加载、图片请求 |
Coil | 专为图片加载设计,支持协程和Flow | 图片缓存、占位图处理 |
传输层安全
network_security_config.xml
)res/raw
目录数据加密
| 加密层级 | 实现方式 |
|———-|—————————————————————————|
| 传输加密 | SSL/TLS协议(HTTPS自动处理) |
| 应用层加密 | AES/RSA混合加密(敏感数据如支付信息) |
| 存储加密 | Android Keystore系统(密钥存储) |
身份认证
// 示例:Retrofit+协程的错误处理 suspend fun fetchData(api: ApiService) { try { val data = api.getData() // 可能抛出HttpException或IOException // 处理正常数据 } catch (e: HttpException) { when (e.code()) { 401 -> handleUnauthorized() 500 -> showServerError() else -> logError(e) } } catch (e: IOException) { showNetworkError() // 处理断网/超时 } catch (e: Exception) { logUnexpectedError(e) } }
优化方向 | 具体措施 |
---|---|
连接复用 | OkHttp默认开启连接池,设置ConnectionPool(maxIdle, keepAlive) |
请求合并 | 使用RxJava/Coroutines合并高频请求(如分页加载时) |
缓存策略 | Retrofit配合OkHttpCache(磁盘缓存)或Room数据库(本地缓存) |
流量压缩 | Gzip压缩(需服务端支持Content-Encoding: gzip ) |
A1:
A2:
NetworkCallback
监听网络状态