1.创建空maven项目 创建完成
Programming Ability Test (PAT) aims to evaluate objectively, through unified examinations with automatic
文章目录 一、Ability 简介 二、创建应用 三、Page Ability 生命周期 参考文档 : Page Ability 基本概念 Page Ability 声明周期 AbilitySlice 间导航 跨设备迁移 一、Ability 简介 ---- Ability 是应用能力抽象 , 是应用组件 , Ability 分为两种 : ① Feature Ability ( FA ) : 用户交互界面 中的 Layout 布局 ; ② Atomic Ability ( AA ) : 支持 Service 模板 和 Data 模板 ; Service 模板没有 UI 界面 , 是一个后台服务 ; Data 模板提供数据访问抽象 ; Ability 一定程度上相当于 Android 中的 Activity , Service , ContentProvider 组件 ; 二、创建应用 ---- 参考上一篇博客 INACTIVE 状态 ; 如果当前的 Page Ability 处于 BACKGROUND 状态 , 当该 Ability 彻底销毁 , 正在结束 , 因内存不足终止 , 用户重新进入该界面 时 ,
例如,如果一个变量可以为空,它的类型需要 ? 后缀。一个不可以为空的命名参数,需要使用 required 标记。 针对迁移,你有两个选项可以选择: 使用迁移工具,它可以帮你处理大多数可推导的变更。 6.1使用迁移工具 迁移工具会带上一个非空安全的 package ,将它转换至空安全。你可以先在代码中添加 提示标记 开始转换前,请做好如下的准备: 使用最新的 Dart SDK 稳定版本。 运行 dart pub outdated --mode=null-safety 以确保所有依赖为最新且空安全。 而因为你知道 zero 不会为空,所以你可以改进迁移结果。 由于你的代码还未迁移到空安全,所以无法使用空安全的新特性。但是你可以进行与空安全无关的改动,例如重构。 当你完成编辑后,点击 Rerun from sources 进行更改。
“作者:坚果 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。 鸿蒙开发核心之Ability详解 Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。 AbilitySlice 生命周期 image-20220121124118415 说实话一开始创建项目的时候就只有这个MainAbility和HelloWorld以及slice包下的MainAbilitySlice 在Service的整个生命周期只会调用一次,调用时传入的Intent应为空。 person/10 本地设备:dataability:///com.domainname.dataability.persondata/person/10 说明:本地设备的“device_id”字段为空,
摘要 如果想把本地的一个项目进行托管,应该如何操作?如何将本地的项目和远程的仓库进行连接管理? 关键点:git remote add origin 远程地址名 本地项目执行操作 1.在本地项目目录下初始化 git 仓库 git init 2.将本地项目下工作区的所有文件添加到 git 版本库的暂存区中 将暂存区的文件进行提交到版本库 git commit -m '{描述}' 远程 github 执行操作 创建一个仓库(仓库名任意),并复制仓库地址git@github.com:zqunor/lamp.git 设置本地项目版本库的远程仓库地址
Ability Ability概述 Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。 一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。 Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。 PA支持Service Ability和Data Ability: Service模板:用于提供后台运行任务的能力。 Data模板:用于对外部提供统一的数据访问抽象。 在配置文件(config.json)中注册Ability时,可以通过配置Ability元素中的“type”属性来指定Ability模板类型,示例如下。
项目背景介绍-Emax2 ● 昆明主城老旧排水管网改造及泵站建设工程,是由昆明滇池投资有限责任公司负责,在昆明市主城区新建3座泵站,拆除重建2座泵站,对10座泵站进行设备更换,属于整体项目定位较高端的市政项目 ; ● ABB 授权盘厂云南人民电力电气有限公司中标一部分改造项目; ● 昆明主城老旧排水管网改造及泵站建设工程 (富善村泵站)选用ABB EDCS方案,进线框架断路器进行智能监测; 项目成功的关键 助意大利供水节省运营成本 客户需求 ● 泵站位置较为偏远,希望实现供水泵站点的远程监控 ● 替代以往人员现场巡检,实现操作工作和成本的优化 ● 避免意外停电 ● 避免电能质量低带来的罚金 解决方案 通过ABB Ability 同时可在问题发生时快速响应 ——优化了运维计划,节省40%的维护时间 ——降低人员成本 (交通成本, 运维策略优化以及相关数据支持) ——减少劣质电能罚款 ● 预计投资回报周期 < 3 个月 4 优势总结 ● 通过ABB Ability ● 通过ABB ability云平台提供的电能优化管理报告,长期优化管理运行的设备达到节省能耗的目的 ● 通过Emax2设备的预测性维护功能,可以追踪项目的健康曲线,减少运维次数,最终达到综合节省30%
在栈顶,那么再次显示这个Page Ability时,不会再创建新的Page Ability实例,而是直接使用这个Page Ability实例。 如果Page Ability上面有其他的Page Ability,那么首先弹出这些Page Ability,然后再重用这个Page Ability。 1中只有一个Page Ability1,如果让Page Ability2显示,那么Page Ability2必须压栈,Page Ability3显示也需要完成同样的工作。 图1 现在假设Page Ability1的launchType属性值是standard,那么从Page Ability1中启动Page Ability1,如果启动2次,就会再创建两个Page Ability1 如果Page Ability1的launchType属性值是singleton,那么不管显示多少次Page Ability1,在栈中永远只有1个Page Ability1实例。
Data Ability基本概念 使用Data模板的Ability(以下简称“Data”)有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。 形式仍然是Ability,因此,开发者需要为应用添加一个或多个Ability的子类,来提供程序与其他应用之间的接口。 Ability定义了6个方法供用户处理对数据库表数据的增删改查。这6个方法在Ability中已默认实现,开发者可按需重写。 配置文件中该字段在创建Data Ability时会自动创建,name与创建的Data Ability一致。 针对Data Ability开发,有以下Codelabs可供参考: 关系型数据库 基于Data Ability的关系型数据库和数据管理能力,实现数据库相关应用服务的快速开发。
Ability ,这种跳转需要借助 featureAbility 实现,跳转示意图如下所示:本节将简单介绍这两种方式的页面跳转。 ,在不指定开目标 Ability 里的页面时,则默认打开 Ability 的第一个页面。 parameter:设置打开 Ability 的参数,说明如下:want:打开目标 Ability 的配置项。bundleName:目标 Ability 的包名称。 abilityName:目标 Ability 的全路径。params:传递给目标 Ability 的参数。可以在该参数里指定需要打开的页面。 打开Ability的默认首页面创建第二个 Ability ,依次点击 File -> new -> Ablity -> Empty Page Ability(eTS) ,添加 SettingAbility
Page Ability概述 Page Ability是FA唯一支持的Ability,本质上是一个窗口,类似于Android的Activity,用于提供与用户交互的能力。 ; import ohos.aafwk.ability.Ability; public class FirstAbility extends Ability { } 3. abilities是一个对象数组,每一个元素是一个对象,表示一个Ability(包括Page Ability、Data Ability和Service Ability)。 显示Page Ability 到现在为止,一个最小的,而且是完整的Page Ability已经完成了,最后一步就是显示这个Page Ability。 销毁Page Ability 在Page Ability用完后,就需要关闭Page Ability,或称为销毁Page Ability,只需要调用下面的代码即可销毁Page Ability。
Page Ability Page Ability基本概念 Page与AbilitySlice Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。 setMainRoute()方法与addActionRoute()方法的使用示例如下: public class MyAbility extends Ability { @Override } ] ... } ] ... } ... } Page Ability Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放资源),这有助于提升应用的性能和稳健性。 在Ability中调用setResult()可以设置返回结果。详细用法可参考根据Operation的其他属性启动应用中的示例。
Service Ability Service Ability基本概念 基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面 如果多个Ability共用这个实例,只有当与Service绑定的所有Ability都退出后,Service才能够退出。 Service也是一种Ability,Ability为Service提供了以下生命周期方法,通过重写这些方法,来添加其他Ability请求与Service Ability交互时的处理方法。 在Service的整个生命周期只会调用一次,调用时传入的Intent应为空。 启动Service Ability为开发者提供了startAbility()方法来启动另外一个Ability。
HarmonyOS系统是通过对Ability调度,结合系统提供的一致性调度契约对Ability进行生命周期管理,从而实现对用户程序的调度。 Ability框架在API 8及更早版本使用FA模型。 DataAbility也是没有UI的Ability,提供其他Ability进行数据的增删查服务,在后台运行。 FormAbility是卡片Ability,是一种界面展示形式。 1.4 -> 进程线程模型 应用独享独立进程,Ability独享独立线程,应用进程在Ability第一次启动时创建,并为启动的Ability创建线程,应用启动后再启动应用内其他Ability,会为每一个 在Service的整个生命周期只会调用一次,调用时传入的Want应为空。 Service也是一种Ability,Ability为Service提供了以下生命周期方法,开发者可以重写这些方法,来添加其他Ability请求与Service Ability交互时的处理方法。
本文告诉大家如何使用 Silk.NET 创建 OpenGL 空窗口项目。 这是一个全新写的项目,使用上了 dotnet 和 C# 很多新的特性,相对来说也很活跃,我准备开始入坑这个项目 本文的例子完全是从 https://github.com/dotnet/Silk.NET 基础底层封装完成了 DirectX 系列(但还完成没有 D2D 部分)和 OpenAL OpenCL OpenGL OpenXR Vulkan SDL 等 本文的例子是采用高层封装的 OpenGL 创建空窗口 Tutorials 的 Tutorial 1.1 - Hello Window 的代码,只需一个 Program 类即可完成启动应用 在开始之前,先通过 NuGet 安装 Silk.NET 库,对于新项目格式 Key.Escape) { _window.Close(); } } } } 按下 F5 运行代码,即可看到创建了空窗口
子系统配置 Json重要字段 备注说明 “name” Ability名称,对应Ability派生的Data类名。 “type” Ability类型,Data对应的Ability类型为”data“。 字符串 可缺省,缺省值为空 isDefault 表示该卡片是否为默认卡片,每个Ability有且只有一个默认卡片。 true:默认卡片。 false:非默认卡片。 字符串 可缺省,缺省值为空 formVisibleNotify 标识是否允许卡片使用卡片可见性通知。 字符串 可缺省,缺省值为空 jsComponentName 表示JS卡片的Component名称。 对象 可缺省,缺省值为空 customizeData 表示自定义的卡片信息。 具体的行为包括:启动Ability和发布公共事件。
而实际上,优化器在选择执行计划时,非空约束是一个重要的影响因素。为了说明问题,我们建立以下测试表,然后分别说明非空约束在各种情况下对执行计划和性能的影响。 谓词评估 在上面表中,字段SUBOBJECT_NAME中不存在空值,但也没有非空约束,再看以下查询,查找该字段的空值记录: 统计信息如下: 我们看到,需要对表进行全表扫描(关于索引,随后再讨论)。 从10053跟踪文件中,可以看到这对于优化器对执行计划代价估算的影响: 非空约束对索引选择的影响 我们知道,Oracle中B*树索引中不存在空键值,即在表的数据记录中,如果索引中所有字段都为空,则该记录不会被构建到索引树中 我们知道,对于空值的逻辑判断,只能通过IS NULL或IS NOT NULL进行判断,除此之外,一旦表达式中含有NULL值,结果始终为空。 而关联是同等价匹配(=)实现的,不适合空值数据。因此,关联字段可能存在空值时,无法采用ANTI-JOIN。
本文介绍在鸿蒙应用中实现Ability内部Slice之间实现画面迁移的方法。 准备TabList页面布局 在layout目录下创建主画面布局,将其命名为ability_main.xml。 <? 增加路由规则 如代码第16行~第19行所示,首先在Ability类中为每个迁移增加路由规则。代码中为每个迁移指定名称和Slice类。 com.example.helloharmony.slice.MainAbilitySlice; import com.example.helloharmony.slice.TablistAbilitySlice; import ohos.aafwk.ability.Ability import ohos.aafwk.content.Intent; import ohos.agp.components.TabList; public class MainAbility extends Ability Page与AbilitySlice基本概念 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-concept
空对象:表面内部不包含任何属性和方法的对象,比如var obj={}就是一个空对象 空的对象:表面不存在的对象,null. 空对象和空的对象使用typeof返回类型都是object 创建1个空的对象; var obj1=null 空的对象表面该对象并没有创建而是给了一个初始化null的值 空的对象转为布尔值是false,而空对象转布尔是