【8月12日张荣超老师直播课答疑】鸿蒙应用开发-Service核心技术 原创 精华

发布于 2021-8-13 17:27
浏览
35收藏

问题1:老师,音乐资源在哪个手机?怎么共享的呢?

回复:音乐文件放在了工程的src/main/resources/rawfile路径下,并且把工程同时部署在了两部鸿蒙手机上,所以每部手机都有一份独立的音频文件。

 

问题2:老师,我想请问一下,设备的id是怎么生成的?每台设备id都是固定的吗?

回复:所有在线设备的id,是通过以下实用类中的静态方法生成的。每台设备的id并不是固定的,如果把设备重启一下,id会发生变化的。

public class DeviceUtils {
    /**
     * 获得所有在线设备的id列表
     * @return 所有在线设备的id列表
     */
    public static List<String> getOnlineDeviceIdList() {
        // 获得所有在线设备的信息列表
        List<DeviceInfo> onlineDeviceInfoList =
                DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE);
        // 如果所有在线设备的信息列表为空
        if (onlineDeviceInfoList == null || onlineDeviceInfoList.isEmpty()) {
            return null;
        }
        // 初始化所有在线设备的id列表
        List<String> onlineDeviceIdList = new ArrayList<>(onlineDeviceInfoList.size());
        // 遍历所有在线设备的信息列表
        onlineDeviceInfoList.forEach((onlineDeviceInfo) -> {
            // 根据设备信息得到设备id,然后将其添加到所有在线设备的id列表中
            onlineDeviceIdList.add(onlineDeviceInfo.getDeviceId());
        });
        // 返回所有在线设备的id列表
        return onlineDeviceIdList;
    }
}

 

问题3:Service可以认为是个单例吗?

回复:Service是单实例的。在一个设备上,相同的Service只会存在一个实例。如果多个Ability共用这个实例,只有当与Service绑定的所有Ability都退出后,Service才能够退出。

 

问题4:跨设备的前提是这几个设备要在同一个wifi下就可以吗

回复:跨设备的条件有两个:(1)所有设备都登录同一个华为账号(2)所有设备连接到同一个Wifi,或者设备之间通过蓝牙进行连接

 

问题5:如果实际开发中在没有module之间引用,拿不到要启动对象的class怎么启动

回复:鸿蒙页面间导航可以通过显式方式和隐式方式,如果无法知道目标页面的完整Ability Name,可以通过隐式的方式指定action。

 

问题6:老师,还有一个问题,如果附近有多个设备,那怎么调用指定的某一台设备

回复:对于上述问题2中的代码,通过DeviceInfo不但可以得到所有在线设备的id,还可以得到设备的其它信息。

 

直播的相关示例代码,请见附件。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
示例代码.zip 19.4M 196次下载
39
收藏 35
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐