鸿蒙手机(真机)播放音乐-第二集

鸿蒙手机(真机)播放音乐-第二集

为什么音乐无法暂停呢?

看了鸿蒙文档就知道了:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-concept-0000000000044457

基本概念

基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行。

Service是单实例的。在一个设备上,相同的Service只会存在一个实例。如果多个Ability共用这个实例,只有当与Service绑定的所有Ability都退出后,Service才能够退出。由于Service是在主线程里执行的,因此,如果在Service里面的操作时间过长,开发者必须在Service里创建新的线程来处理(详见线程间通信),防止造成主线程阻塞,应用程序无响应。

之后需要创建线程来处理这个问题

官方文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/inter-thread-overview-0000000000038958

private TaskDispatcher globalTaskDispatcher = null;
globalTaskDispatcher = context.getGlobalTaskDispatcher(TaskPriority.DEFAULT);



    public void asyncLoadSound(String fileName){
        System.out.println("音乐播放状态:"+audioRenderer.getState());
        if(audioRenderer.getState() == AudioRenderer.State.STATE_PLAYING){
            audioRenderer.pause();
            return;
        }

        Revocable revocable = globalTaskDispatcher.asyncDispatch(new Runnable() {
            @Override
            public void run() {
                loadSound(fileName);
            }
        });
    }
扫描二维码关注公众号,回复: 12453470 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_33259323/article/details/112945787