#鸿蒙通关秘籍#如何在鸿蒙视频播放器中实现线程间通信以更新页面状态?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Yvr低语AJAX

为实现线程间通信,使用 Emitter 进行事件发布和订阅。生成器负责发布事件,页面作为订阅者接受这些事件并更新状态:

  1. 在生成器中,定义updateState方法发送事件:
static async updateState() {
  const data = {
    playState: JSON.stringify({
      duration: VideoAVPlayerClass.duration,
      time: VideoAVPlayerClass.time,
      isPlay: VideoAVPlayerClass.isPlay,
      playIndex: VideoAVPlayerClass.playIndex,
      playList: VideoAVPlayerClass.playList,
    })
  };
  emitter.emit({ eventId: EmitEventType.UPDATE_STATE }, { data });
}
  1. 在页面部分注册事件监听者并存储播放状态,同时自动重新渲染页面:
@State
playState: VideoPlayStateType = new VideoPlayStateTypeModel({} as VideoPlayStateType);

async aboutToAppear() {
  emitter.on({ eventId: EmitEventType.UPDATE_STATE }, (data) => {
    this.playState = new VideoPlayStateTypeModel(JSON.parse(data.data.playState));
  });
}

通过这样的事件驱动模型,确保播放器状态的变化能够及时反映在用户界面上。

分享
微博
QQ
微信
回复
2天前
相关问题
如何更新页面列表数据
6890浏览 • 1回复 待解决
使用AVPlayer实现视频播放器
1155浏览 • 1回复 待解决