Flutter Agora:用户从最近任务杀死app时如何结束直播流释放资源?
Agora Flutter 应用被强制杀死场景的流资源释放解决方案
- 优先通过原生端生命周期回调处理:Flutter层的
didChangeAppLifecycleState、dispose方法无法捕获App从最近任务列表被移除的最终销毁事件,你需要在原生侧补全处理逻辑:- Android端在主
Activity的onDestroy生命周期方法中,调用全局Agora RtcEngine实例的leaveChannel、destroy方法主动结束直播流、释放资源 - iOS端在
AppDelegate的applicationWillTerminate方法中执行上述释放逻辑
- Android端在主
- 依靠Agora内置的掉线检测兜底:Agora服务端默认会检测频道内用户的连接状态,若用户异常断开连接超过预设阈值,服务端会自动将用户移出频道,终止对应的流分发和计费逻辑,无需客户端主动上报
- 业务层补全状态同步逻辑:直播场景下,观众端可监听
userOffline回调,收到回调后直接更新UI移除对应离线用户的画面;如果需要更精准的业务状态管理,可定期同步服务端的频道在线用户列表,清理异常离线用户对应的业务资源
注:原生层调用Agora相关接口时,需保证使用的RtcEngine实例和Flutter层初始化的全局实例为同一个,避免因实例不统一导致释放逻辑不生效
内容的提问来源于stack exchange,提问作者Jay Mungara
相关产品推荐
相关产品推荐

