关于鸿蒙有几个问题,希望大家能够帮忙解答一下
1. 应用程序生命期,Ability生命期是怎样的?Ability, AbilitySlice, AbilityPackage三者是什么样的关系?
2. HiLog接口的用法说明
3. socket接口的用法说明
4. 应用程序权限设置说明
5. Time.setTimeZone()的第二个参数应该如何设置?能否给出可设time zone的完整列表?
6. Time.setTimeZone()调用失败(抛出异常:没有android.permission.SET_TIME_ZONE权限),应该如何解决这个问题?
鸿蒙
HarmonyOS
赞
1
收藏 0
回答 1
已解决
相关问题
关于鸿蒙的话,期待已久了。有没有大佬能帮忙解答一下几个问题
7563浏览 • 4回复 待解决
帐号授权相关问题,和大家讨论一下
12980浏览 • 3回复 待解决
请教2个vp相关的问题,麻烦解答一下
270浏览 • 1回复 待解决
ob有如何下报错,麻烦帮忙看一下?
4961浏览 • 1回复 待解决
当前IAP已新增沙箱环境,关于沙箱环境的几个问题说明
343浏览 • 0回复 待解决
想了解一下大家使用鸿蒙系统的体验
5浏览 • 0回复 待解决
Preview预览界面的问题,哪个大佬懂解答一下啊?
4092浏览 • 2回复 待解决
有老铁解答一下么
8300浏览 • 1回复 待解决
hilink通用协议估计开发接入,帮忙指导一下。
9507浏览 • 1回复 待解决
请教一下大家,鸿蒙项目打包APP时,提示模块间有不同的releaseType sdkversion
379浏览 • 0回复 待解决
看了10.20的直播,有一些关于鸿蒙的问题想问大家
9194浏览 • 2回复 待解决
请教一下关于应用分栏实现
822浏览 • 1回复 待解决
想找朋友了解一下关于应用鸿蒙开发,有偿
7507浏览 • 4回复 待解决
请教一下关于Ticktimer 的疑问?
3467浏览 • 1回复 待解决
IndexBar遇到的问题汇总,希望有人能给解答!!!
9608浏览 • 1回复 待解决
#鸿蒙通关秘籍#有没有帮我解答一下蓝牙技术的实现原理的?最近有这方面的开发任务想了解一下
96浏览 • 1回复 待解决
谁分享一下鸿蒙视频的功能体验一下啊
6470浏览 • 1回复 待解决
#鸿蒙通关秘籍#请问一下大家在HarmonyOS中都是怎么区分@Extend、@Styles、@Builder
206浏览 • 1回复 待解决
问大家一个问题,关于原服务的?
7106浏览 • 1回复 待解决
希望能提供一下图片处理的样例工程
386浏览 • 1回复 待解决
关于3861烧录异常报错问题,求解答
8426浏览 • 2回复 待解决
HarmonyOS 希望提供一下不规则的瀑布流布局的实现demo
243浏览 • 1回复 待解决
#鸿蒙通关秘籍#问一下哈,卡片的formProvider模块有什么作用?
96浏览 • 1回复 待解决
请问大家有在openharmony上编译log4cpp的经验不?麻烦分享一下
3007浏览 • 1回复 待解决
请问一下nodejs能连接oceanbase吗?有驱动吗?
3854浏览 • 1回复 待解决
1. 应用程序生命期,Ability生命期是怎样的?Ability, AbilitySlice, AbilityPackage三者是什么样的关系
Ability是应用能力的抽象,分为FA与AA。FA提供与用户交互的能力,可以包含一组AbilitySlice, 每一个页面用一个AbilitySlice实例表示,而AA提供Service(后台服务)与Data模板(数据管理)。FA与AA可以再conifg.json的Ability注册中区分,通过type字段来指定。
AbilityPackage相当于安卓的application
Ability的生命周期
onStart()
当系统首次创建Page实例时,触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后将进入INACTIVE状态。开发者必须重写该方法,并在此配置默认展示的AbilitySlice。例如super.setMainRoute(FooSlice.class.getName());
onActive()
Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。
当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调。因此,开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源。
onInactive()
当Page失去焦点时,系统将调用此回调,此后Page进入INACTIVE状态。开发者可以在此回调中实现Page失去焦点时应表现的恰当行为。
onBackground()
如果Page不再对用户可见,系统将可能根据资源状况调用此回调,此后Page进入BACKGROUND状态。开发者应该在此回调中释放Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。
onForeground()
处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),系统将先调用onForeground()回调使Page回到INACTIVE状态,然后调用onActive()回调使Page回到ACTIVE状态。开发者应当在此回调中重新申请在onBackground()中释放的资源。
onStop()
此回调表示系统正在销毁Page
2. HiLog接口的用法说明
提供的快速查看LOG的方法,
具体用法如下
private static final HiLogLabel LABEL_LOG = new HiLogLabel(0, 0, “LogUtils“);
该方法提供log打印的属性
private static final String LOG_FORMAT = "%{public}s: %{public}s";
该方法提供log打印出的信息的格式
HiLog.warn(LABEL_LOG, LOG_FORMAT, tag, msg);
该方法提供警告类型的打印信息,tag为用户定义的TAG,msg为打印信息
3.socket接口的用法说明
socket接口位于rt_java包中,用法与java的socket完全一致。例如初始方法 Socket(String host, int port),连接host地址port端口。获取流方法public InputStream getInputStream(), pulic OutputStream getOutputStream()。
鸿蒙sdk下提供了网络DatagramSocket 进行数据传输 方式步聚为
调用NetManager.getInstance()获取网络管理的实例对象。
调用NetManager.getDefaultNet()获取默认的数据网络。
调用NetHandle.bindSocket()绑定网络。
使用socket发送数据
InetAddress address = netHandle.getByName("www.baidu.com");
DatagramSocket socket = new DatagramSocket();
netHandle.bindSocket(socket);
byte[] buffer = new byte[1024];
DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, port);
// 发送数据
socket.send(request);
4. 应用程序权限设置说明
开发者需要再config.json文件中的reqPermissions字段声明需要的权限,支持多个权限同时申请
采用json的list格式
"reqPermissions": [
{
"reason": "",
"name": "harmonyos.permission.SET_WIFI_INFO",
"used-scene": {
"ability": [
".MainAbility"
],
"when": "inuse"
}
},
.......]
其中name字段必选 为权限名称
reason字段可选 让申请权限为user_grant时,则为必选,用于描述申请权限的原因
used-scene字段可选,让申请权限为user_grant时,则为必选 ability字段填写ability的名称,when是使用时机 inuse(使用时),always(始终)
user_grant权限为动态监测权限,每次执行操作都会检查自身是否有该权限。有才可继续执行,否则应用需要请求用户授予权限。
调用方法checkSelfPermission查询权限是否已经授予,如果授予那么结束申请流程,如果没有那么进入申请流程, 调用canRequestPermission是否可动态申请。如果不能申请结束,如果可以那么调用requestPermissionFromUser动态申请权限,并且再回调操作中得到申请的结果。
5、TimeZone.getAvailableIDs() 获取可设time zone的完整列表。
6、在config.json文件中增加权限android.permission.SET_TIME_ZONE。