关于鸿蒙有几个问题,希望大家能够帮忙解答一下

1. 应用程序生命期,Ability生命期是怎样的?Ability, AbilitySlice, AbilityPackage三者是什么样的关系?
2. HiLog接口的用法说明
3. socket接口的用法说明
4. 应用程序权限设置说明
5. Time.setTimeZone()的第二个参数应该如何设置?能否给出可设time zone的完整列表?
6. Time.setTimeZone()调用失败(抛出异常:没有android.permission.SET_TIME_ZONE权限),应该如何解决这个问题?

鸿蒙
HarmonyOS
2020-09-18 11:03:36
浏览
1
收藏 0
回答 1
已解决
回答 1
按赞同
/
按时间
红叶亦知秋
2

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。

分享
微博
QQ
微信
回复1
2020-09-18 15:31:43
相关问题
帐号授权相关问题,和大家讨论一下
10957浏览 • 3回复 待解决
ob有如何报错,麻烦帮忙一下
2793浏览 • 1回复 待解决
老铁解答一下
6549浏览 • 1回复 待解决
请教一下关于Ticktimer 的疑问?
1552浏览 • 1回复 待解决
大家问题关于原服务的?
5232浏览 • 1回复 待解决
关于3861烧录异常报错问题,求解答
6680浏览 • 2回复 待解决
请问一下鸿蒙的pad应用该如何签名?
6237浏览 • 1回复 待解决
分享一下你的鸿蒙系统使用感受吧
2339浏览 • 1回复 待解决
关于Wearable开发的几个疑问
5813浏览 • 2回复 待解决
编译OpenHarmony2.0失败,求助一下
7032浏览 • 3回复 已解决
关于索引的问题懂的吗?
1106浏览 • 1回复 待解决