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

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值