范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

HarmonyOS(鸿蒙操作系统)你值得拥有

  今天我们来谈谈当下最火爆的万物互联的操作系统—Harmony OS, 这是国人的骄傲,也是每一个中华儿女值得去学习和研究的国产操作系统。在这里主要是想通过自己所写的一个小 Demo 来初探一下 Harmony OS 系统下的 app 应用开发,如有不对之处还望指出,共勉之。
  Step 1: 开发环境的搭建
  IDE & SDK 的安装就不在这里详细讲解了,华为的官网上面既有安装包也有相关的步骤,相信大家可以通过文档自行完成。
  Step2: app开发的相关术语学习(摘至华为官网)第一部分:系统的定义
  HarmonyOS 是一款"面向未来"、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。
  第二部分:开发app应用程序包结构
  HarmonyOS 的用户应用程序包以 APP Pack(Application Package) 形式发布,它是由一个或多个 HAP(HarmonyOS Ability Package) 以及描述每个 HAP 属性的pack.info组成。
  HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。
  一个 HAP 是由代码、资源、第三方库及应用配置文件组成的模块包,可分为 entry 和feature 两种模块类型。
  Entry
  entry:应用的主模块。
  一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
  Feature
  feature:应用的动态特性模块。
  一个 APP 可以包含一个或多个 feature 类型的 HAP,也可以不包含。只有包含 Ability 的 HAP 才能够独立运行。
  Ability
  Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。
  Ability 分为两种类型:FA(Feature Ability)和 PA(Particle Ability)。
  FA/PA 是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
  库文件
  库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在 libs 目录。
  资源文件
  应用的资源文件(字符串、图片、音频等)存放于 resources 目录下,便于开发者使用和维护,详见资源文件的分类。
  配置文件
  配置文件 (config.json) 是应用的 Ability 信息,用于声明应用的 Ability,以及应用所需权限等信息,详见应用配置文件。
  pack.info
  描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和 HAP 的分类存储。
  HAP 的具体属性包括:
  delivery-with-install: 表示该 HAP 是否支持随应用安装。"true":表示支持随应用安装;"false":表示不支持随应用安装。
  name:HAP 文件名。
  module-type:模块类型,entry 或 feature。
  device-type:表示支持该 HAP 运行的设备类型。
  HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和 config.json 文件。HAR 不同于 HAP,HAR 不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。
  用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称"应用"。
  在 HarmonyOS 上运行的应用,有两种形态:
  传统方式的需要安装的应用。
  提供特定功能,免安装的应用(即原子化服务)。
  第三部分:开发过程中常见的术语解释Page 与 AbilitySlice
  Page 模板(以下简称"Page")是 FA 唯一支持的模板,用于提供与用户交互的能力。一个Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。
  当一个 Page 由多个 AbilitySlice 共同构成时,这些 AbilitySlice 页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个 Page 来实现,其中包含了两个AbilitySlice:一个 AbilitySlice 用于展示新闻列表,另一个 AbilitySlice 用于展示新闻详情。
  Intent
  Intent 是对象之间传递信息的载体。例如,当一个 Ability 需要启动另一个 Ability 时,或者一个 AbilitySlice 需要导航到另一个 AbilitySlice 时,可以通过 Intent 指定启动的目标同时携带相关数据。
  Ability
  Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分。
  一个应用可以具备多种能力(即可以包含多个 Ability ),HarmonyOS 支持应用以 Ability 为单位进行部署。Ability 可以分为 FA(Feature Ability)和 PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。
  FA 支持 Page Ability:
  Page 模板是 FA 唯一支持的模板,用于提供与用户交互的能力。一个 Page 实例可以包含一组相关页面,每个页面用一个 AbilitySlice 实例表示。
  PA 支持 Service Ability 和 Data Ability:
  Service 模板:用于提供后台运行任务的能力。
  Data 模板:用于对外部提供统一的数据访问抽象。
  Service Ability 基本概念
  基于 Service 模板的 Ability(以下简称"Service")主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。
  Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行。Service 是单实例的。在一个设备上,相同的 Service 只会存在一个实例。如果多个 Ability 共用这个实例,只有当与 Service 绑定的所有 Ability 都退出后,Service 才能够退出。
  由于 Service 是在主线程里执行的,因此,如果在 Service 里面的操作时间过长,开发者必须在 Service 里创建新的线程来处理(详见线程间通信),防止造成主线程阻塞,应用程序无响应。
  Data Ability基本概念
  使用 Data 模板的 Ability(以下简称"Data")有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data 既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
  数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。Data 对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。
  备注:以上是一些在进行 Harmony OS app 应用开发过程中会经常涉及到的一些概念的东西,也是非常重要的,有一定的理解后将有利于我们进行系统的开发,所以我整理了一下放到了第二部分。
  Step3:Demo 示例讲解第一部分:程序结构与程序入口
  如上图所示:entry 是应用的主模块,
  1——标识的地方是 Slice 切片,
  2——标识的地方是 main 方法所在的类文件,
  3——标识的地方是存放样式文件,
  4——标识的地方是存放的布局文件。
  第二部分:两个Slice 文件内容package com.example.myapplication.slice; import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component;  public class MainAbilitySlice extends AbilitySlice {     /*     onStart()       当系统首次创建Page实例时,触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,       Page在该逻辑后将进入INACTIVE状态。开发者必须重写该方法,并在此配置默认展示的AbilitySlice。      */     @Override     public void onStart(Intent intent) {         super.onStart(intent);         //ResourceTable相应当selenium中的driver,这里要是在设置布局为 ability_main.xml文件的内容,前面的Layout_是框架规则好的         super.setUIContent(ResourceTable.Layout_ability_main);          //类似于python 中selenium中的通过 id 来查找元素,这里的Id_button是ability_main.xml中的button 的id值         Button button = (Button) findComponentById(ResourceTable.Id_button);          //判断button 是否为null         if(button != null){             //给button 设置click监听事件             button.setClickedListener(new Component.ClickedListener() {                 @Override                 public void onClick(Component component) {                     //这里相当于是render另一个页面(这里传入了一个SecondAbilitySlice and Intent),实现了页面的跳转                     present(new SecondAbilitySlice(),new Intent());                 }             });         }     }      /*     onActive()       Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,      该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,      比如用户点击返回键或导航到其他Page。当此类事件发生时,会触发Page回到INACTIVE状态,      系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调。      因此,开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源。      */     @Override     public void onActive() {         super.onActive();     }     /*     onForeground()       处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),       系统将先调用onForeground()回调通知开发者,而后Page的生命周期状态回到INACTIVE状态。       开发者应当在此回调中重新申请在onBackground()中释放的资源,最后Page的生命周期状态进一步回到ACTIVE状态,       系统将通过onActive()回调通知开发者用户。      */     @Override     public void onForeground(Intent intent) {         super.onForeground(intent);     } } package com.example.myapplication.slice;  import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; //import ohos.global.systemres.ResourceTable; import com.example.myapplication.ResourceTable; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.agp.components.Text; import ohos.hiviewdfx.HiLog; import ohos.hiviewdfx.HiLogLabel;   public class SecondAbilitySlice extends AbilitySlice {     private static final int MY_MODULE = 200;      @Override     protected void onStart(Intent intent) {         super.onStart(intent);         super.setUIContent(ResourceTable.Layout_ability_second_slice);          Text text = (Text) findComponentById(ResourceTable.Id_second_text);         if(text != null){             String myname = intent.getStringParam("name");             final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, MY_MODULE, "MY_TAG_Tony"); //MY_MODULE=0x00201             HiLog.info(label, "the myname is:", myname);         }         //这里跟MailAbilitySlice中的作用一样,找button元素,这个元素就是Go Back         Button button=(Button) findComponentById(ResourceTable.Id_seconde_button);          if(button != null){             button.setClickedListener(new Component.ClickedListener() {                 @Override                 public void onClick(Component component) {                     present(new MainAbilitySlice(),new Intent());                 }             });         }     } }
  第三部分:两个 Layout 布局和一个 graphic 文件内容
  备注:   表示的是文本框,里面的 ohos:text 表示文本的内容   表示的是按钮,里面的 ohos:id 表示元素的id值   里面的 ohos:text 表示按钮的文本内容   里面的 ohos:background_element 表示背景(就是CSS)   Graphic 文件夹下存放的是样式文件,在Button 和 Text 里面可以引用这个里面的样式,如上图中的第三张图所示。   在开发过程中,如 layout 目录下文件名和 id 值及 graphic 目录下的文件名在IDE中是有联想选择的,有的会拼接上一些固定字符串。   Import 导入第三方包时,一定要注意导入是正确的,在开发过程中发现有同名包,但是不是我们想要使用的,就会一直报错。
  第四部分:运行后得到的效果图如下所示(这里选择的设备为 Iphone)
  实现的场景非常的简单,就是点击下面第一张图中的 Go 时(绑定了 click 监听事件),就跳转到如下第二张图中去,这里是切换到了另一个 Slice 的 page。当再点击此张图片中的 Go Back时,又能够回到第一张图的界面。

手机连上WiFi后,该不该关闭移动数据?中国移动给出了答案手机作为现在人们的生活必需品,从最开始的大哥大到现在的智能手机,经历了很多次的变革。最初刚刚有手机的时候,大家纷纷觉得手机是一种奢侈品,尤其是大哥大年代,只有做生意的人才能买得起。苹果不死手机不活为什么手机厂越努力就表现得越像苹的子公司?多数人把苹果的成功归结于AppStore的成功,认为iOS紧紧依靠AppStore实现了一种全新的商业模式,并让苹果从硬件到软件再到服务都Meta计划加入NFT市场,改名后的Facebook越来越元宇宙雷峰网1月21日消息,Facebook母公司Meta计划,拟允许客户创建和推广NFT(非同质化代币)。据了解,Facebook和Instagram团队正在开发一项可以让客户在账号资周末证券数字经济启动十万亿新市场!数字货币5G应用云计算一个都不能少本文共1401字阅读完约3分钟金融投资报记者林珂作为中国经济未来十年乃至更长时间内的重要驱动力,数字经济的战略地位再度被抬高。近期,国务院印发十四五数字经济发展规划(以下简称规划)CPU盒装和散装有什么区别?作为消费者买哪个最划算?文小伊评科技首先我们要明确一个概念,什么是散装什么是盒装。盒装很好理解,就是指那些有外包装的CPU,简单来说就是零售版的CPU,在盒装CPU中会有保修卡,会有配套的风扇,并且会享受美又将黑手伸向中企?英媒美国借国安名义调查阿里云环球时报报道美国政府把黑手伸向阿里云?英国路透社18日报道称,美国政府正在审查中国电子商务巨头阿里巴巴的云存储业务,以确定它是否对美国国家安全构成风险。消息人士称,美国监管机构可能Java8的G1垃圾回收器相对于之前的CMS有什么特别的呢?CMSCMS垃圾回收器,全称ConcurrentMarkSweep并发标记清除,从名字上面我们也可以看出这个垃圾回收器是基于标记清除算法实现的。首先并发表示GC线程可以和用户线程并尼安德特人或坐拥生存天赋据日本读卖新闻报道,美国研究团队近期的成果揭示,已经灭绝的史前人类尼安德特人拥有一种有利于生存的基因,能够帮助其节约能量安然渡过饥荒或者是个体的饥饿状态。目前只有一部分的现代人类遗中通快递(02057)时效再提升跑步进入第一梯队智通财经APP获悉,1月21日,国家邮政局举行2022年第一季度例行新闻发布会,通报2021年快递服务满意度调查和时限准时率测试结果。其中,快递服务满意度调查显示,2021年,快递七部门鼓励车企研发适合农村居民出行需要的新能源汽车人民网北京1月21日电(申佳平)据国家发展改革委官网消息,国家发展改革委工业和信息化部等七个部门近日联合印发促进绿色消费实施方案(以下简称实施方案),其中提出深入开展新能源汽车下乡英拒绝华为真相揭开美胁迫外交再被实锤来源中央广电总台国际在线编辑刘沐晨日前,英国前商务大臣凯布尔在一场名为中国,伙伴还是对手的专题研讨会上的发言。他在发言中爆料称,英国政府禁止华为5G设备和服务的决定与英国的国家安全
三个好股票分享1东方电气,电气设备板块。燃料电池,新能源汽车,储能概念,一带一路,国企改革等多重概念。上升趋势良好,还在继续上涨2浙商证券,底部支撑区域,大趋势向上的,部分券商已启动,这只也要启下一个低位低价潜力爆发股名单财经TOM哥,每日关注风口机会,欢迎关注1低位低价股,近日狂掀涨停潮!2如何寻找下一个低位爆发品种?优选新能源科技主线,行业空间达千亿规模以上的品种优选业绩有望超预期的低位低价低估UptimeKuma一个花哨的开源监控工具大家好,我是等天黑,今天介绍一个开源免费的监控工具UptimeKuma,简单实用,主要用来监控Web和网络,和Prometheus不一样的是,它是轻量的,基于Node。js和Vue新能源汽车产销突破300万产业发展再上新台阶来源人民网原创稿近日,新能源汽车行业传来喜讯。今年前11个月,我国新能源汽车产销取得历史性突破,累计生产突破300万辆,销量接近300万辆。300万辆的亮眼成绩不仅代表着量的突破,美国想在5G问题上怂恿韩国据韩联社首尔12月16日报道,正在韩国访问的美国国务院负责经济事务的副国务卿费尔南德斯16日称,美方希望构建可信赖的网络,正与韩方就构建第五代移动通信(5G)网络事宜进行探讨。报道fio文件系统性能测试备注使用的是yum进行的安装,大家可以使用源码编译安装(centos7)安装yuminstallyfio使用filename指定文件(设备)的名称。可以通过冒号分割同时指定多个文件Markdown常用语法总结头条不能以代码模式查看,所以分两部分来写效果语法。效果和语法部分一一对应,最好自己把语法复制下来保存为。md用md编辑器打开。先看效果Markdown常用语法注查阅时在视图中切换为问问联想控股,这是你家汉卡吗?今天我们这里刮台风,闲着无聊,看今日头条,看到有网友说联想的事情,我就看这个网友到处拼的图,根本不是联想的东西,就好奇,搜索了一下,然后发现了一个神奇的事情。当年我也是卖过联想汉卡JAVA并发之ReentrantLock原理解析Java从版本5开始,在java。util。concurrent。locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock大家印象中,贬值最快的手机有哪些?说起什么手机保值,想必大家都会觉得是苹果,因为印象中苹果手机用了几年后,二手还能卖不少钱。那么说到,手机贬值,大家印象中,贬值率最高的机型是哪个?下面小编我就分享一些,排名不分先后2021年三季度5G手机报告发布华为仍占第一作者林斐来源IT时报根据中国信通院发布的报告,2021年第三季度,我国手机市场中5G手机逐步渗透,呈现稳定发展态势,手机配置上也呈现出高性能化的发展趋势。每日互动大数据发布2021