【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 201次下载
赞
39
收藏 35
回复
相关推荐
好的不错
真是好想法
直播时, 没有空认真听老师讲课, 刚补回来, 在课堂里, 老师碰到的问题,我知道原因,
因为在AbilitySecondSlice里的onStart()方法调用了setListenerForBtnToMain()方法, 而setListenerForBtnToMain方法直接就terminateAbility()关闭了, 所以在setListenerForBtnToMain方法里,要添加上btnToMain按钮的事件绑定, 点击时,再调用terminateAbility().
学习了,学习了~