自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

童年纸飞机的博客

坚持比方法更重要

  • 博客(99)
  • 收藏
  • 关注

原创 HarmonyOS-ArkUI: 自定义组件冻结功能@ComonentV2 freezeWhenInactive属性

自定义组件冻结能力的使用通常用在以下三大场景页面路由场景Tab页, TabContent导航 Navigation说白了就是一个页面接着一个切的那种操作场景。新的界面出来,之前的那个界面就是inactive了,就可以被冻结了。这个粗略的描述可以涵盖大部分场景但不绝对。

2025-04-17 16:48:21 508

原创 HarmontOS-ArkUI V2状态 !!语法糖 双向绑定

双向绑定指的是在组件间数据的双向绑定。当一个值无论是在父组件还是子组件中改动都会在这两层中都更新界面。!!语法糖能完成双向绑定!!语法糖更省代码,写起来简洁。其数据同步是原子级的。不用担心什么多线程引发的问题。

2025-04-16 19:33:20 664

原创 HarmonyOS-ArkUI V2状态-PersistenceV2:持久化存储UI状态

PersistenceV2类是一个与AppStorageV2类用法非常相似的类。因为它俩是子类和父类的关系。如果不了解AppStorageV2,可以先跳转至了解一下这个类。PersistenceV2相比于其父类AppStorageV2而言,它存储的数据是持久化存储的。也就是它里面的数据能写在盘里,SD卡里。其周期越过了App的生命周期。本次App存储的数据,杀掉进程后, 在下次App开启的时候是可以拿到这些值的。PersistenceV2最值得一提的作用是。

2025-04-15 19:30:44 668

原创 HarmonyOS-ArkUI V2工具类:AppStorageV2:应用全局UI状态存储

AppStorageV2是一个单例,创建时间是应用UI启动时。其目的是为应用的数据状态提供中心存储,这些数据是应用级别都可以访问得到的。它将在应用运行过程中为应用保存数据。数据通过唯一的字符串进行访问。使用位置在组件内可以使用。在普通的类中,UIAbility类中也可以使用。支持应用主线程内多个UIAbility实例间的状态共享。总结下来就是全方位都可以使用。

2025-04-15 16:46:38 386

原创 HarmonyOS-ArkUI V2装饰器: @Computed装饰器:计算属性

Computed装饰器是用来装饰getter方法的。getter方法中涉及到相关状态变量的计算。当相关的状态变量发生变化时会自动触发Computed修饰的函数重新计算。对于比较复杂的计算,Computed会有性能收益。// 1 必须是get方法。2 可以返回任意类型 3Computed里面不要改状态变量的值,会引发死循环。@Computed...@Computed装饰器说明支持类型getter访问器从父组件初始化禁止可初始化子组件@Param被执行时机。

2025-04-15 10:27:45 741

原创 HarmonyOS-ArkUI V2装饰器: @Monitor装饰器:状态变量修改监听

根据上方的代码,我们大概知道了Monitor应该是怎么用的,也应该能猜测的出这个装饰器是干什么的了。下面讲讲具体的使用规则。也就是监听具有时效性,创建是我们自己定义的,销毁是系统在组件销毁的时候替我们销毁的。这样能替我们避免很多关于内存泄漏的问题。具体是: @Monitor定义在@ComponentV2装饰的自定义组件中时,@Monitor会在状态变量初始化完成之后生效,并在组件销毁之时失效。@Trace message: string = "默认值"

2025-04-14 18:11:09 1135

原创 HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同步

Provider需要与@Consumer配合使用。两者通过一个key建立联结。此key表现在,这两个装饰器都接收一个叫aliasName的参数,用来指定其修饰的变量的别名。之后靠这个别名来寻找绑定关系。@Provider属性装饰器说明装饰器参数aliasName?:string, 别名,缺省时默认为属性名,建议最好写这个参数支持类型自定义组件中成员变量。属性类型可以为number,string, boolean, class, Array, Date, Map, Set 等类型。支持装饰箭头函数。

2025-04-13 21:46:16 989

原创 HarmonyOS: ArkUI V2装饰器-@Event:规范组件输出

Event说白了就是修饰回调函数的。比如:一个父组件,里面包含了一个比较复杂的子组件。当子组件做某些操作的时候,需要让父组件感知到当前做了这种操作了。在过往Android开发中经常碰见这种场景, 比如子组件做完某个任务了通知父组件, 父组件知道了后就立马更新其范围内的控件展示样式。此时我们实现的时候往往会往子控件中设置一个含有回调接口的类,或者接口句柄,等子控件完成任务就调用句柄的回调函数。但是ArkUI里,您要自己写一个interface,然后设置回调函数,也不是不能做到,就是麻烦。

2025-04-13 14:49:35 955

原创 HarmonyOS-ArkUI V2装饰器-@Once

前文,关于@Param的使用:@Once装饰器是一个需要配合@Param装饰器一块使用的的装饰器。它的特性是,仅仅在变量进行初始化的时候,接受一个外部传来的值进行初始化,然后就不接受后续同步变化了, 当后续数据源进行更改时,不会将修改同步给子组件。它的底层是针对数据源的变化做了拦截操作。

2025-04-11 18:46:20 403

原创 HarmonyOS-ArkUIV2装饰器-@Param:组件外部输入

上文我们了解了@Local装饰器 ,讲明了Local装饰器不允许外部传入值对其进行初始化。详见:。但总有场景是需要外部组件传值过来,然后本组件接收这个值这种场景的。而且很多情况下,一个状态变量的作用范围会是会传递到子组件中,而不是像Local这样只能在自己所在的组件中发挥作用。对于这种场景我们用@Param装饰器可以搞定。

2025-04-11 16:19:06 1050 1

原创 HarmonyOS-ArkUI V2装饰器@Local装饰器:组件内部状态

因为Local本身的特性就是能检测到Array,Set,Map,Date等内嵌类型的API调用,我们改其中一个元素的值,就相当于调用API了,自然会被观测到。我们要讨论的是,Array,Set,Map这类类型的元素为一个Object的时候,并且Object本身存在很大深度的时候,改了某一个元素其中一个属性的值。但是如果它修饰类的对象的时候,如果对象的某个属性再下一层的某个属性发生了变化,例如 A有B类的属性,B有C类属性,这个C类中的属性中某个值发生变化了,就无法观测到了。加一个暂时的另外的动画。

2025-04-11 09:05:56 1149

原创 HarmonyOS-ArkUI 装饰器V2 @ObservedV2与@Trace装饰器

本文主要围绕类属性变化观测相关的装饰器 @ObservedV2和@Trace装饰器进行讲解。在了解这俩装饰器前我们先做一些其他方面的预习,便于以后理解。

2025-04-10 15:49:43 1139

原创 状态管理概览

先列个概览,以后慢慢分析各大装饰器。此文做了解,熟悉下概念即可。

2025-04-10 09:01:58 229

原创 HarmonyOS-ArkUI Ability进阶系列-各类生命周期总结

答:window先感知到的,对于事件分发Window是先于UIAbility知道的,如果Window接收的事件需要自己配合,比如人家知道是用户滑到任务列表了,那么先暂停下自己也是没问题的, 但是收到back键它不会处理欧,天晓得里面有多少个界面仅仅就是导航back,而不是自己退出呢,所以它自己不处理,但是会路由下去!而且有些事件的路由方式并非是系统先找Window的,再加上实现逻辑要复用吧,so首次开启的时候即使Window能先触发,那也可以在onForground之后来进行,来确保周期状态变化的一致性。

2025-04-08 15:52:06 1644

原创 有感&体会

折腾来折腾去,才领悟到,最容易的搞钱方式,就是当牛马。真的佩服那些能折腾出成绩来的人。人家但从某方面可能不如你专业,但是综合素质,是很适应这个时代大环境的,没得说。

2025-04-07 09:09:53 73

原创 HarmonyOS-ArkUI Ability进阶系列-UIAbility与各类Context

UIAbility中的this.context 与 getContext(this) 这两种方式都可以获取UIAbilityContext对象,而且获取的都是同样的实例。只是二者来源不同。

2025-04-05 18:04:37 937

原创 工程画图-UML类图 组合和聚合

分清组合 和 聚合的关系

2025-04-04 13:56:46 205

原创 HarmonyOS-ArkUI Rcp模块类关系梳理

RCP全称 Remote Communication Platform。其通过对HTTP协议的NAPI封装,提供基于场景化的声明式开发范式API接口,使开发人员无需处理低级别的HTTP细节,降低代码量并提升开发效率。提供基于会话的多线程模型,并动态调整和部署HTTP参数。相比于ohos.net.http模块。RCP在并发场景下进行了性能优化,使数据传输更快,性能更强。Session是一个生命周期略长的会话,在会话期间,可以发送多条Request,从而获取Response。

2025-04-02 18:58:54 934

原创 HarmonyOS-ArkUI NetConnection基本使用

默认激活网络指的是,系统优先使用的,正常的网络。系统自动切换。对于系统自动切换的网络,有以下三个维度物理层的网络已经连接上具备互联网访问能力具备优先级方面,依次如下有线网络wifi蜂窝VPN其他类型网络以上是系统选择网络的策略。因为以上策略,再加上我们所处的环境不断变动。所以这个默认激活网络具备变动性当更高优先级的网络出现时,连接成功的时候会自动切换网络。至少保持TCP/IP协议栈的ESTABLISHED状态。

2025-03-31 14:21:04 831

原创 HarmonyOS-ArkUI Navigation (导航组件)-第一部分

Row(){Text('菜单1')Text('菜单2')Text('菜单3')Text('菜单4')Text('菜单5')build() {Column(){.margin({top: 20,})})//设置为分栏模式//设置顶部标题.title("主标题")// 设置顶部菜单栏//设置底部工具栏。

2025-03-27 18:41:13 1126

原创 HarmonyOs-ArkUI Image组件

支持的类型。

2025-03-26 09:55:12 730

原创 HarmonyOs ArkUI- Tabs组件(导航栏)

大部分情况下,尤其是主页中的导航栏,不是纯文字的,这时候需要我们写自定义导航栏。如下图,才是应用的常态:这个的写法是比较复杂的,不过需要仔细看下,因为这里面利用了@Builder装饰器。相当于是我们提前做了解了。这个装饰器在自定义组件常见。同时如果您有实现自定义组件的需求,且这个自定义组件可以被使用者定制,您也可以仿照这样去设计!很简单且很好的案例。原理: Bars组件中的,tabBar组件,可以接受一个自定义的函数组件样式。如图好,我们就是利用CustomBuilder来进行自定义组件的设置。

2025-03-26 09:46:36 1037

原创 HarmonyOS-ArkUI Grip组件

网格布局是由“行”和“列”分割的单元格组成,通过指定项目所在的单元格做出各种各样的布局,网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要的自适应布局,使用场景如,九宫格,计算器,日历等。ArkUI为网格布局提供了相关的组件,Grid以及GridItem。Grid用来设置布局相关参数,GridItem定义子组件相关特征。

2025-03-25 16:51:47 1018

原创 HarmonyOS-ArkUI: Swiper组件

Swiper() {// ...}, false)这个主要还是靠双向绑定来完成,Swiper本身提供了一个属性。首先,每个项目展示的宽高,透明度,缩放程度,Z轴方向,都要是双向绑定的数据。以便以后面双向绑定数据发生变化之后,可以联动界面发生变化。之后我们只需要通过得知滑动的事务特点,来计算 宽高,透明度,缩放程度,Z轴方向 等属性应该会等于多少即可。这里面难的会是,滑动动一下,其他界面的值也得变化。所以计算的时候代码会有些烧脑。

2025-03-25 10:48:21 606

原创 HarmonyOs-ArkUI List组件

列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。

2025-03-23 07:01:43 1004

原创 HarmonyOS-UIAbility 启动模式

HarmonyOS涉及的启动模式,就是Android中的那个启动模式,一样的概念。它指的是一个UIAbility实例,被打开的时候,如果已经存在了UIAbility,是复用上一个呢,还是重新创建一个呢, 如果复用的话,那窗口行为应该是什么呢。模式就是来指定这些行为的。在HarmonyOS中启动模式被简化成了三种单例模式 singleton多实例模式 multiton指定实例模式 specified。

2025-03-19 16:40:57 817

原创 HarmonyOs- UIAbility应用上下文

有过开发经验的都知道,当我们在一个系统上进行开发的时候,无论是Android,HarmonyOs,Linux 等等,从顶层的全系统,到窗口系统,服务系统等子系统,全部存在一个叫 上下文的 概念。(如果每一个类,都记录一个关于系统信息的对象,光是设置参数同步给系统,然后其他模块各自的对象都得变,尽管逻辑上能实现,但是这种行为还是比较疯魔的,从运行速度还是内存消耗,都比共享要差很多。我们这里以顶层设计的视角,假设您要研发一个手机系统的UI框架,并且选定了实现的模型之后,那么您的上下文应该涵盖什么呢?

2025-03-19 10:33:44 1241

原创 HarmonyOS-UAbility组件基础

一个包含用户界面的应用组件,主要作用是用于和用户进行交互。就是可以经过桌面图标点击进去的,或者用户在后台使用列表选择而进入的界面。提供了窗口,用于界面绘制。UIAbility在实现上是系统调度的基本单元,为应用提供了一个绘制界面的窗口。一个应用可以包含一个或者多个UIAbility组件。且每一个UIAbility组件都会在最近列表中显示出一个任务。这块和Android的Activity是比较不一样的!如果开发者只需要您的应用里看到一个,那就使用任务。那么建议一个UIAbility + 多个页面的处理方式。

2025-03-18 14:42:03 938

原创 HarmonyOS-应用程序框架基础

应用模型是一个应用程序的模型,它是一种抽象的描述,用来描述一个程序的不同方面。上述图中出现了打包后的结构,里面有一些 .hap, .hsp 之类的文件格式,下面我们讲一下这些文件格式. 这些格式的文件都是包.格式是不一样的,里面有区别. 它们是多模块开发,模块的编译产物. 对于模块而言,分为三类,对应编译出来的包文件格式也是三类.应用框架可以看做是应用模型的一种实现方式,开发人员可以用应用模型来描述应用程序的结构和行为的描述,然后使用应用程序框架来实现这些描述。这在一方面体现了,可分可合的特点。

2025-03-16 15:47:55 568

原创 手机端安装包签名原理

楼主先列出自己的总结,再讲签名签名的本质 = 哈希值被加密生成的 这段数据(如果不理解哈希值的原理和用途,建议先了解一下这块,否则难以理解下文的原理!)至于用什么加密手段,看使用方怎么个策略,对于移动开发的打包签名, 哈希值被加密,采用的算法是 非对称性加密,(如果不理解非对称性加密,还是建议先了解一下这块,否则流程中您可能还是不懂为什么要那么做。签名可以理解为,被数字签名技术运算,在文件中附上的独一无二的那个标识。这个生成“标识”的过程比较复杂。其核心目的就是确保一个文件的独一无二。

2025-03-12 20:29:01 953

原创 synchronized实现原理

synchronized的处理多次提到了监视器锁这个概念。什么是监视器锁呢?监视器锁是synchronized实现的核心,也是JVM保证多线程机制的核心。监视器锁严格来讲,要分成,锁和监视器来讲。我们先对这两个概念进行初步的了解,之后再串联动态执行时的机制。所谓的“锁”究竟是什么对象头数据解析在java中,每一个对象在存储时,具备一个对象头。他是对象在内存布局中的一部分。主要是用于存储对象的一些元数据信息,比如哈希码,分代年龄,锁状态等。对象头的信息对于JVM实现锁机制,垃圾回收机制,具有重大的意义。

2025-02-13 17:33:36 935

原创 JVM之Java编译到执行(1)--引

成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。JVM的整体流程开始于类加载,我们知道了JVM宏观的思路后,再研究每个环节,下篇文章将先从类加载讲起, 类加载的输入是class文件(字节码文件),楼主将贯彻费曼学习法,知无不言,将他们写出来。javac就是Java的前端编译器,是个编译工具,负责把程序员写的java文件,经过初步的分析,转换为class文件。总共拆分为两个阶段。

2025-01-23 14:20:14 1324

原创 二分思想及代码边界判断避坑指南

我们在做算法题的过程中,最容易出现的错误就是,边界判断问题。在大多数情况下,代码实现的思想和算法是正确的,并且可以简单的写出大致逻辑。但是往往问题就卡在如何优雅的判断边界,这个需要程序员比较灵活的头脑和清晰的逻辑。正常情况下,代码实现的越简洁优雅,侧面反映了程序员的逻辑越清晰。很不幸,笔者没有这种灵活的头脑。做算法题中每每都能折在边界判断上,即:特殊case测不过。不是越界问题,就是漏掉了边缘情况。可能存在方法论,没方法论的话,那只能见一个搜罗一个。public://采用二分法int midle。

2025-01-15 19:42:53 837

原创 C++ vector

STL是C++标准模板库(Standard Template Library)的简称. STL容器指的是这个标准模板库里的容器。很简单。其中容器有很多种类,种类分布如下图vector: 英文含义为矢量,向量,载体。这个名字起的是比较有趣的,因为向量,有方向!跟java的数组相比,这个C++的vector的确存在方向!并且在上图中可以看出,vector是一种可以存储顺序数据的容器。但是事实上一个数据即使是顺序的,也有不同的组织方式,例如我们可以用,数组,链表这样的方式来描述一串有顺序的数据。

2025-01-14 10:26:11 619

原创 Harmony错题本--RelativeContainer 默认占全屏问题

AI问答得到的答案暂时解决不了一些看似刁钻实则普通的问题,要全面替代程序员,有段路程要走。RelativeContainer 可以为宽高设置为 auto 来实现自适应宽度或者高度。但是这个自适应,会因为子控件的alignRules设置方式而被打破。子控件没有面向RelativeContainer边上的锚点时((left, middel, right)横向, (top, center, bottom)纵向), 则其对应的方向就会自适应。一旦有了锚点则相关方向默认铺满。

2024-11-21 12:44:02 962

原创 HarmonyOs学习笔记-布局单位

鸿蒙开发中布局存在很多单位鸿蒙的默认单位是vp下方先展示一下在RrkTsUI中我们应该怎么书写,然后讲一下各大单位具体的含义。

2024-11-18 22:42:58 1016

原创 Harmony错题本--@Preview标注上依然无法预览

楼主觉得代码上没有写错,于是把之前能预览的界面也拿过来试试,看看能不能预览, 发现也出了问题。首先json文件不支持这种注释, 第二楼主按照网上查的json应该怎么注释,这种方式来改,也是不行的。初学HarmonyOs开发,写了一个超级简单的组件,但是代码上没有什么问题,DevEco Studio却无法完成预览。HarmonyOs开发时, json文件最好不要有注释,可能会影响预览能力,甚至编译也会出问题。于是打开 main_pages.json文件,发现了问题。所以对于json文件而言,最好不要注释!

2024-11-16 21:36:10 756

原创 C++ 错题本 MAC环境下 unique_lock try_lock_for函数爆红问题

● C++有的语句,方法找不到,是因为方法根本就没有被实现,原因是编译器所带工具链库,实现方式不同导致,但基本上大差不差,大多能一样调用,出现不同的话,应该会找到替代的方式。● LLVM是个很强悍的编译工具链,苹果公司有采用这套工具链。Xcode使用的Clang编译器,也是LLVM架构下的。Clang编译器以其友好的错误和警告信息著称,受到开发者喜爱。

2024-11-12 22:38:39 1086

原创 C++ 错题本--duplicate symbol问题

写排序算法, 提出了一个公共的头文件用来写一些工具方法, 比如打印数组内容. 以便于不同文件代码需要打印数组内容的时候,直接引入相关头文件即可, 但是编译时出现了 duplicate symbol 报错.C++中, 多文件编译, 整个横向的跨度上, 对于函数而言, 允许多次声明, 一次定义. 但是不允许多次声明, 多次定义. 代码原来的写法,正是促成了 "多次声明多次定义"的情况, 是不符合其标准的.C++允许多次声明, 一次定义. 定义指的是,写出具体实现逻辑的方法.C++编译的时候会分开编译.

2024-11-11 21:29:27 589

原创 C++ 错题本--not found for architecture x86_64 问题

用到了API但是没有引入头文件, 会出现 not found for architecture x86_64 报错能引发这个报错的原因有很多很多, 以后遇见了再总结!但目前确定的一个原因是● 源代码没有引入相应的头文件会引发此问题。

2024-11-10 21:30:47 477

HarmonyOS-ArkUI Rcp模块类关系梳理图片

HarmonyOS-ArkUI Rcp模块类关系梳理图片

2025-04-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除