不同应用在各自独立的进程中运行。当应用以任何形式启动时,系统为其创建进程,该进程将持续运行。当进程完成当前任务处于等待状态,且系统资源不足时,系统自动回收。
成都创新互联服务项目包括淮滨网站建设、淮滨网站制作、淮滨网页制作以及淮滨网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,淮滨网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到淮滨省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在启动应用时,系统会为该应用创建一个称为“主线程”的执行线程。该线程随着应用创建或消失,是应用的核心线程。UI界面的显示和更新等操作,都是在主线程上进行。主线程又称UI线程,默认情况下,所有的操作都是在主线程上执行。如果需要执行比较耗时的任务(如下载文件、查询数据库),可创建其他线程来处理。
如果应用的业务逻辑比较复杂,可能需要创建多个线程来执行多个任务。这种情况下,代码复杂难以维护,任务与线程的交互也会更加繁杂。要解决此问题,开发者可以使用“TaskDispatcher”来分发不同的任务。
TaskDispatcher是一个任务分发器,它是“能力”分发任务的基本接口,隐藏任务所在线程的实现细节。
为保证应用有更好的响应性,我们需要设计任务的优先级。在UI线程上运行的任务默认以高优先级运行,如果某个任务无需等待结果,则可以用低优先级。
线程优先级:
① 高优先级 HIGH
② 默认优先级 DEFAULT
③ 低优先级 LOW
TaskDispatcher具有多种实现,每种实现对应不同的任务分发器。在分发任务时可以指定任务的优先级,由同一个任务分发器分发出的任务具有相同的优先级。
系统提供的任务分发器有:
① 全局并发任务分发器 GlobalTaskDispatcher
② 并发任务分发器 ParallelTaskDispatcher
③ 串行任务分发器 SerialTaskDispatcher
④ 专有任务分发器 SpecTaskDispatcher
3.1,全局并发任务分发器,由Ability执行getGlobalTaskDispatcher()获取。适用于任务之间没有联系的情况。一个应用只有一个GlobalTaskDispatcher,它在程序结束时才被销毁。
3.2,并发任务分发器,由Ability执行createParallelTaskDispatcher()创建并返回。与GlobalTaskDispatcher不同的是,ParallelTaskDispatcher不具有全局唯一性,可以创建多个。开发者在创建或销毁dispatcher时,需要持有对应的对象引用 。
3.3,串行任务分发器,由Ability执行createSerialTaskDispatcher()创建并返回。由该分发器分发的所有的任务都是按顺序执行,但是执行这些任务的线程并不是固定的。如果要执行并行任务,应使用ParallelTaskDispatcher或者GlobalTaskDispatcher,而不是创建多个SerialTaskDispatcher。如果任务之间没有依赖,应使用GlobalTaskDispatcher来实现。它的创建和销毁由开发者自己管理,开发者在使用期间需要持有该对象引用。
3.4,专有任务分发器,绑定到专有线程上的任务分发器。目前已有的专有线程为UI线程,通过UITaskDispatcher进行任务分发。
UITaskDispatcher:绑定到应用主线程的专有任务分发器, 由Ability执行getUITaskDispatcher()创建并返回。 由该分发器分发的所有的任务都是在主线程上按顺序执行,它在应用程序结束时被销毁。
其实很多HarmonyOS 2.0用户都有这种感觉,现在的根目录都很乱且不知道哪个产生的文件夹,全都放在根目录了,目前在这方面又没有特别的工具来优化或整理。我们一起期待华为新的HarmonyOS版本能够优化根目录。
至于出现Android文件夹很容易说明,是因为鸿蒙兼容Android,且装了Android的软件当然要产生Android的文件夹了。如果是开发者,需要测试兼容应用,可参考“没有鸿蒙OS设备如何检测Android App是否兼容HarmonyOS”一文。
查看方法如下所示:
1、打开手机,然后点击设置。
2、进去手机设置之后,然后点击应用和服务。
3、进去鸿蒙系统应用和服务之后,然后点击权限管理。
4、进去权限管理之后,然后点击位置信息。
5、进去之后,可以设置应用位置权限,根据需要设置,就完成了。
安卓有个清单文件,四大组件、权限等都需要在清单文件中注册,清单文件是个xml文件。类似的,鸿蒙应用有个配置文件,应用的每个HAP的根目录下都存在一个“config.json”配置文件,主要涵盖以下三个方面:
应用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三个部分组成,缺一不可。
app 示意:
deviceConfig 包含在具体设备上的应用配置信息,可以包含 default 、 car 、 tv 、 wearable 、 liteWearable 、 smartVision 等属性。 default 标签内的配置是适用于所有设备通用,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。
deviceConfig 对象的内部结构说明
default/car/tv/wearable 等对象的内部结构说明
network 对象的内部结构说明
securityConfig 对象的内部结构说明
deviceConfig 示例:
module 对象包含HAP包的配置信息,内部结构说明如下
module 示例:
distro 对象的内部结构说明
distro 示例:
abilities 对象的内部结构说明
abilities 示例:
form 对象的内部结构说明
form 示意
skills 对象的内部结构说明
skills 示例:
shortcuts 对象的内部结构说明
shortcuts 示意
以 JSON 文件为 config.json 的一个简单示例,该示例的应用声明为三个 Ability。