
教育直播Android客户端采用模块化+分层(MVVM)架构,核心模块分为Live(直播流程管理)、Video(音视频编解码与传输)、Interaction(用户互动处理)、Stats(数据采集统计),通过Hilt实现依赖注入,模块间通过Retrofit(RPC网络通信)和WebSocket(实时事件流)解耦,确保音视频低延迟、互动实时、数据同步。
老师讲解:教育直播系统架构像“交响乐团”,各模块各司其职,通过“指挥”(架构设计)协调运行。
| 通信方式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Hilt(依赖注入) | Dagger/Hilt实现类依赖管理 | 自动化注入,解耦依赖 | 模块间依赖(如Activity与Presenter) | 需配置模块,避免硬编码依赖 |
| Retrofit(RPC) | 网络请求框架(HTTP/2) | 真实网络,异步回调 | 音视频数据传输、后台API调用 | 需处理网络错误(如重试、缓存) |
| WebSocket | 长连接实时通信协议 | 双向实时,低延迟 | 互动事件(弹幕、举手)推送 | 需管理连接状态,避免内存泄漏 |
伪代码示例(用户点击“举手”按钮,通过Hilt注入依赖,调用Interaction模块的WebSocket推送):
// 依赖注入(Hilt)
@AndroidEntryPoint
class LiveActivity : AppCompatActivity() {
private val livePresenter: LivePresenter by inject()
private val interactionManager: InteractionManager by inject()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_live)
livePresenter.bindView(this)
interactionManager.bindView(this)
findViewById<Button>(R.id.btn_raise_hand).setOnClickListener {
livePresenter.raiseHand()
}
}
}
// 业务逻辑层
class LivePresenter(private val interactionManager: InteractionManager) {
fun raiseHand() {
// 通过Interaction模块的WebSocket推送事件
interactionManager.sendRaiseHand(userId)
}
}
// 互动管理模块
class InteractionManager {
private val webSocketClient: WebSocketClient by lazy {
WebSocketClient("wss://api.haofutv.com/websocket")
}
fun sendRaiseHand(userId: String) {
webSocketClient.sendEvent("raiseHand", userId)
}
}
面试官您好,教育直播客户端我考虑采用模块化+分层(MVVM)架构,核心模块分为直播管理(Live)、音视频处理(Video)、互动管理(Interaction)、数据统计(Stats)。通过Hilt实现依赖注入,模块间通过Retrofit(网络通信)和WebSocket(实时事件)解耦。比如用户点击“举手”,UI层调用业务逻辑层,通过Interaction模块的WebSocket推送事件到服务器,服务器处理后返回结果,UI更新。这样架构能保证音视频低延迟、互动实时、数据同步,符合教育直播的实时性要求。