鸿蒙应用开发实战
文章平均质量分 81
介绍鸿蒙开发基础知识、框架原理、系统Api,以及项目实战
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
xiangzhihong8
著有《React Native移动开发实战》1,2,3版本、《Kotlin入门与实战》1,2版本、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》和《Android应用架构实战》,《鸿蒙应用开发与实战》即将出版
展开
-
DevEco Profiler性能调优工具简介
应用或服务运行期间可能出现响应速度慢、动画播放不流畅、列表拖动卡顿、应用崩溃或耗电量过高、发烫、交互延迟等现象,这些现象表明应用或服务可能存在性能问题。造成性能问题的原因可能是业务逻辑、应用代码对系统API的误用、对ArkTS对象的不合理持有导致内存泄露等,引起对系统资源不合理使用,包括对CPU、内存、网络、文件、GPU、以及其他外设等器件的冗余占用,进而引发性能问题。原创 2024-03-24 10:09:02 · 85 阅读 · 0 评论 -
鸿蒙开发之自定义上拉加载更多
在HarmonyOS应用开发过程中,特别是列表开发场景中,经常会遇到下拉刷新、上拉加载更多的需求。除了使用第三方的下拉刷新、上拉加载组件,例如PullToRefresh。支持设置内置动画的各种属性,支持设置自定义动画,支持lazyForEarch的数据作为数据源。对于不是很复杂的场景,我们还可以使用自定义组件方式来实现下拉刷新、上拉加载更多,下面以上拉加载更多为例。实现的原理是,监听ListItem组件的滑动事件,当滑动的距离超过阈值时,就执行数据添加操作,对应的示例代码如下。原创 2024-03-22 11:21:06 · 118 阅读 · 0 评论 -
鸿蒙应用开发之流式网络布局
在HarmonyOS开发中,实现流式网络布局需要用到Flex组件的wrap属性,并且为了方便在其他项目中使用,我们需要将流式网络布局拆分成一个单独的组件,代码如下。在移动应用开发过程中,经常会遇到需要开发流式网络布局的情况,即大家平时所说的自动换行布局。比如在搜索页面,经常会看到猜你想搜,如下图所示。然后,在业务页面中传入字符串数组即可,如下所示。原创 2024-03-18 11:05:40 · 103 阅读 · 0 评论 -
鸿蒙开发之组件生命周期
自定义组件的创建:自定义组件的实例由ArkUI框架创建。初始化自定义组件的成员变量:通过本地默认值或者构造方法传递参数来初始化自定义组件的成员变量,初始化顺序为成员变量的定义顺序。如果开发者定义了aboutToAppear,则执行aboutToAppear方法。在首次渲染的时候,执行build方法渲染系统组件,如果子组件为自定义组件,则创建自定义组件的实例。build() {...})})...当应用在后台启动时,此时应用进程并没有销毁,所以仅需要执行onPageShow。原创 2024-03-11 16:47:24 · 91 阅读 · 0 评论 -
鸿蒙开发之gson解析
作为老牌的Java程序员,几乎每个项目都逃不掉fastjson/gson等三方库。那么在OpenHarmony/HarmonyOS应用开发中,做数据解析时能不能使用fastjson/gson三方库呢?于是我搜索了一下,其实在arkts开发过程中也是可以使用JS里自带的JSONparse和JSONstringify方法来实现JSON和对象转换的。并且在早期的版本中还提供了一个开源的三方库。有人做过验证ohos_gson与JSON的转换的时间评测,结果是ohos_gson花费的时间是JSON的20倍以上。原创 2024-03-06 14:50:16 · 432 阅读 · 0 评论 -
HarmonyOS Full SDK的安装
OpenHarmony的应用开发工具HUAWEI DevEco Studio现在随着OpenHarmony版本发布而发布,只能在版本发布说明中下载,例如最新版本的OpenHarmony 4.0 Release。下载好后,分别解压出ets js native previewer toolchains,把它们一起放在DevEco Studio中设置的sdk目录下(注意上一级目录要为数字,如果是要替换api9,这个数字就是9。首先,需要到OpenHarmony数字协作平台 下载Full SDK,如下图。原创 2024-03-01 17:59:39 · 325 阅读 · 0 评论 -
无法导入ohos.bundle.installer错误解决方法
造成错误的原因是,我们使用的是public-sdk,所以我们需要到OpenHarmony平台下载full-sdk,下载链接:https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist?今天在运行一个开源项目时,发现编译项目时报了一个错误:ohos.bundle.installer。如果没有找到,可以看看滚动构建是不是有,然后替换成full-sdk即可。原创 2024-02-29 11:33:21 · 106 阅读 · 0 评论 -
鸿蒙开发之Profiler性能分析
应用或服务的性能较差时,可能表现为响应速度慢、动画播放不流畅、卡顿、崩溃或极其耗电。为了避免出现这些性能问题,需要通过一系列性能分析工具来确定应用或服务对哪方面资源(例如CPU、内存、显卡、网络和设备电池)的使用率比较高。DevEco Studio集成Profiler性能分析器,通过Profiler性能分析器提供实时性能分析数据,并通过图表形式进行呈现,方便开发者及时了解应用/服务的CPU占用、内存的分配占用、网络资源占用和电池资源消耗的具体数据。原创 2024-02-24 18:12:24 · 138 阅读 · 0 评论 -
初识HarmonyOS
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,由Google成立的OHA(Open Handset Alliance,开放手机联盟)领导并开发,为各类智能手机及便携式设备提供可运行的操作系统。Android操作系统最早由Andy Rubin、Rich Miner和Nick Sears等人创建并开发,后被Google于2005年收购。原创 2024-01-26 22:11:54 · 1587 阅读 · 0 评论 -
都在卷鸿蒙开发,那就推荐 几个鸿蒙开源项目
如果要问2024年最火的技术是什么,那鸿蒙开发必须占据一些位置,HarmonyOS是华为自主研发的物联网操作系统,自2019年8月正式发布以来便受到了广大开发者的追崇。为了方便大家学习鸿蒙开发,本文分享 12 个开源的鸿蒙实战项目,希望能从这些项目中获得启发和实用经验。原创 2024-01-21 15:22:57 · 205 阅读 · 0 评论 -
HarmonyOS NEXT鸿蒙星河版发布
而蚂蚁集团、中国银联等众多伙伴,开放垂域创新能力,和鸿蒙的底座能力一起,给开发者提供了高效的全链路开发工具,进一步加速鸿蒙原生应用开发。同时, 鸿蒙校园公开课已走进135家高校,305所高校学生参与鸿蒙活动,286家企业参加鸿蒙生态学堂,38万+开发者通过鸿蒙认证。1月18日,在深圳举行的“鸿蒙生态千帆启航仪式”上,华为常务董事、终端BG CEO余承东宣布HarmonyOS NEXT鸿蒙星河版面向开发者开放申请。鸿蒙星河版将实现原生精致、原生易用、原生流畅、原生安全、原生智能、原生互联6大极致原生体验。原创 2024-01-18 22:31:14 · 730 阅读 · 0 评论 -
鸿蒙应用开发之stage模型和fa模型的区别
Stage 模型与 FA 模型最大的区别在于:Stage 模型中多个应用组件共享同一个虚拟机, 而 FA 模型中,每个应用组件独享一个虚拟机。Stage 模型作为鸿蒙系统的主要应用编程模型,开发者通过它能够更加便 利地开发出分布式场景下的复杂应用。为复杂应用设计:多应用组件在运行时共享同一个虚拟机引擎,从而减少复杂应用 运行内存的占用。采用面向对象的开发方式,使得复杂应用代码可读性高、易维护、扩展性强。原创 2023-11-02 09:37:08 · 2968 阅读 · 0 评论 -
鸿蒙应用开发之后台代理提醒
等能力。后台代理提醒服务提供统一的提醒管理能力,在应用退居后台或退出后,计时和提醒通知功能被系统后台代理接管。以新增一个9点的喝水提醒为例:假设用户在8点新增这个喝水提醒,应用根据用户设置的信息生成提醒实例并发布提醒。由后台代理提醒服务调用系统服务启动计时。到9点时,系统唤醒后台代理提醒服务发布通知,最终由通知服务触发桌面显示通知。原创 2023-11-03 11:03:53 · 255 阅读 · 0 评论 -
都有哪些大厂开始适配鸿蒙原生应用呢
12月8日,随着支付宝宣布启动鸿蒙原生应用开发以来,国内宣布接入鸿蒙原生应用开发的公司越来越多。事实上,自9月华为宣布鸿蒙原生应用全面启动以来,已有金融、旅行、社交等多个领域的企业和开发者陆续宣布加入鸿蒙生态,比较知名的公司如中国国际航空、宝宝巴士、同程旅行、美团、京东、微博、网易、支付宝、小红书、B站等公司都开始加入鸿蒙原生应用开发的队伍。那都有哪些公司在接入鸿蒙原生应用开发呢,又有哪些公司准备接入呢,我这里简单的梳理下。原创 2023-12-15 11:19:53 · 1496 阅读 · 0 评论 -
鸿蒙应用开发之Video组件
在手机、平板或是智慧屏这些终端设备上,媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集,还是视频的播放、切换、循环,亦或是相机的预览、拍照等功能,媒体组件都是必不可少的。以视频功能为例,在应用开发过程中,我们需要通过ArkUI提供的Video组件为应用增加基础的视频播放功能。借助Video组件,我们可以实现视频的播放功能并控制其播放状态。常见的视频播放场景包括观看网络上的较为流行的短视频,也包括查看我们存储在本地的视频内容。原创 2023-10-24 09:37:19 · 697 阅读 · 0 评论 -
鸿蒙开发之hdc命令行
hdc(HarmonyOS Device Connector)是HarmonyOS为开发人员提供的用于调试的命令行工具,通过该工具可以在windows/linux/mac系统上与真实设备进行交互。原创 2023-12-22 21:55:32 · 1846 阅读 · 0 评论 -
鸿蒙应用开发之组件状态管理
在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。图片ArkUI作为一种声明式UI,具有状态驱动UI更新的特点。当用户进行界面交互或有外部事件引起状态改变时,状态的变化会触发组件自动更新。所以在ArkUI中,我们只需要通过一个变量来记录状态。当改变状态的时候,ArkUI就会自动更新界面中受影响的部分。图片。原创 2023-10-20 14:02:39 · 579 阅读 · 0 评论 -
互联网大厂招兵买马开发鸿蒙应用,移动开发的春天又来了?
在此前鸿蒙开发者大会上,华为透露鸿蒙底座已经有一亿多行代码,2万的api,7亿多的生态设备,鸿蒙底座已经基本成熟,用户体验方面,harmonyOS经过四个大版本的迭代,已经构建了具有鸿蒙差异化特征的用户体验。因此,鸿蒙系统发展到今天的规模,以及它的手机用户的增量,决定了鸿蒙的走势是向上的,它要蚕食的就是Android与iOS的市场,从这个角度来看,你如果不开发鸿蒙,那么Android与iOS未来的市场份额下滑,互联网大厂的用户也将因此下滑,这是他们不愿意看到的。,仅支持鸿蒙内核和鸿蒙系统的应用。原创 2023-11-12 22:33:08 · 394 阅读 · 0 评论 -
鸿蒙应用开发之Web组件
相信大家都遇到过这样的场景,有时候我们点击应用的页面,会跳转到一个类似浏览器加载的页面,加载完成后,才显示这个页面的具体内容,这个加载和显示网页的过程通常都是浏览器的任务。ArkUI为我们提供了Web组件来加载网页,借助它我们就相当于在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页。图片。原创 2023-10-16 10:58:33 · 876 阅读 · 0 评论 -
鸿蒙应用开发之通知提醒
通知旨在让用户以合适的方式及时获得有用的新消息,帮助用户高效地处理任务。原创 2023-10-30 09:35:23 · 419 阅读 · 2 评论 -
鸿蒙WebGL开发入门
WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScript代码组成的,其中使用的API可以利用用户设备提供的GPU硬件完成图形渲染和加速。原创 2023-12-23 11:22:29 · 1145 阅读 · 0 评论 -
鸿蒙应用开发(基础篇)之列表组件
List是很常用的滚动类容器组件,一般和子组件ListItem一起使用,List列表中的每一个列表项对应一个ListItem组件。Grid组件为网格容器,是一种网格列表,由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。Grid组件一般和子组件GridItem一起使用,Grid列表中的每一个条目对应一个GridItem组件。原创 2023-09-12 10:28:23 · 2586 阅读 · 0 评论 -
鸿蒙应用开发之HTTP数据请求
HTTP即超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。HTTP的工作原理正如上图所示,客户端向服务端发出一条HTTP数据请求,服务端接收请求后向客户端返回一些数据,然后客户端再对这些数据进行解析和处理。原创 2023-10-17 09:35:12 · 2004 阅读 · 3 评论 -
鸿蒙应用开发之三方库使用
常用的三方库可以分为UI、动画、网络、数据、安全、多媒体、框架、工具等。UI库:PhototView:可以通过该组件快速实现图片的缩放、平移和旋转等操作。RoundImageView:可以生成圆角矩形、或者椭圆形等图片形状。网络库:HttpClient:其以耳熟能详的OKHTTP为基础,整合android-async-http、AutobahnAndroid、OkGo等库的功能特性,实现了自定义拦截器、cookie管理等功能。原创 2023-10-25 09:57:05 · 1082 阅读 · 0 评论 -
鸿蒙应用开发之动画基础
属性动画,是最为基础的动画,其功能强大、使用场景多,应用范围较广。简单来说,属性动画是组件的通用属性发生改变时而产生的属性渐变效果。如下图所示,其原理是,当组件的通用属性发生改变时,组件状态由初始状态逐渐变为结束状态的过程中,会创建多个连续的中间状态,逐帧播放后,就会形成属性渐变效果,从而形成动画。[外链图片转存中…(img-fMduxNW3-1697683557904)]原创 2023-10-19 10:46:24 · 261 阅读 · 0 评论 -
鸿蒙应用程序入口UIAbility详解
UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。每一个UIAbility实例,都对应于一个最近任务列表中的任务。一个应用可以有一个UIAbility,也可以有多个UIAbility,如下图所示。例如浏览器应用可以通过一个UIAbility结合多页面的形式让用户进行的搜索和浏览内容;原创 2023-09-08 22:27:26 · 1636 阅读 · 1 评论 -
鸿蒙应用开发之数据管理
首选项为应用提供Key-Value键值型的数据存储能力,支持应用持久化轻量级数据,并对其进行增删除改查等。该存储对象中的数据会被缓存在内存中,因此它可以获得更快的存取速度,下面详细介绍下首选项的开发过程。常用接口有:保存数据(put)、获取数据(get)、是否包含指定的key(has)、删除数据(delete)、数据持久化(flush)等。原创 2023-10-27 14:01:22 · 2146 阅读 · 0 评论 -
鸿蒙应用开发之环境搭建
正所谓“工欲善其事,必先利其器”。在正式学习一门课程之前,我们首先需要做的就是搭建开发环境。首先,我们需要下载DevEco Studio,DevEco Studio支持Windows系统和macOS系统,在开发HarmonyOS应用/服务前,需要配置HarmonyOS应用/服务的开发环境。原创 2023-10-24 21:24:52 · 1285 阅读 · 0 评论 -
鸿蒙应用开发之弹窗
自定义弹窗的使用更加灵活,适用于更多的业务场景,在自定义弹窗中您可以自定义弹窗内容,构建更加丰富的弹窗界面。自定义弹窗的界面可以通过装饰器@CustomDialog定义的组件来实现,然后结合CustomDialogController来控制自定义弹窗的显示和隐藏。下面我们通过一个兴趣爱好的选择框来介绍自定义弹窗的使用。从上面的效果图可以看出,这个选择框是一个多选的列表弹窗,我们可以使用装饰器@CustomDialog,结合List组件来完成这个弹窗布局,实现步骤如下:1,初始化弹窗数据。原创 2023-10-26 11:35:28 · 628 阅读 · 0 评论 -
鸿蒙应用开发之打包与上架
当您开发、调试完HarmonyOS应用/元服务,就可以前往AppGallery Connect申请上架,华为审核通过后,用户即可在华为应用市场获取您的HarmonyOS应用/元服务。HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完整性,需要上架的HarmonyOS应用/元服务都必须通过签名校验,所以上架前,您需要先完成签名操作。原创 2023-11-19 11:22:49 · 224 阅读 · 0 评论 -
鸿蒙应用开发之容器组件
线性布局容器表示按照垂直方向或者水平方向排列子组件的容器,ArkTS提供了Column和Row容器来实现线性布局。Column表示沿垂直方向布局的容器。Row表示沿水平方向布局的容器。了解布局容器的主轴和交叉轴,主要是为了让大家更好地理解子组件在主轴和交叉轴的排列方式。接下来,我们将详细讲解Column和Row容器的两个属性justifyContent和alignItems。属性名称描述设置子组件在主轴方向上的对齐格式。alignItems设置子组件在交叉轴方向上的对齐格式。原创 2023-09-11 09:29:56 · 484 阅读 · 0 评论 -
京东商品接口加解密算法解析
首先,是请求参数中的json字符串sha265加密,组装成了一个r对象。可以看到,第一层加密很容易,第二层加密有些难度,我们直接分析一下第二层的加密技术。解析一下接口,接口返回值跟没什么特殊说明,首尾加了一个方法名,请求参数中有一个h5st的加密参数就是加密的内容。接着,全局搜索h5st,找到js文件,打开源文件,打上断点,继续鼠标下滑,找到了加密的地方。但是意外的发现是,多次请求的结果,返回的h5st是有一定规律的。打开页面,打开开发者工具,往下滑动鼠标,获取接口地址。,然后打开搜索页面,如下图。原创 2022-11-03 11:31:49 · 2058 阅读 · 0 评论 -
什么样的问题应该使用动态规划?
说起动态规划,我不知道你有没有这样的困扰,在掌握了一些基础算法和数据结构之后,碰到一些较为复杂的问题还是无从下手,面试时自然也是胆战心惊。如果我说动态规划是个玄幻的问题其实也不为过。究其原因,我觉得可以归因于这样两点:你对动态规划相关问题的套路和思想还没有完全掌握;你没有系统地总结过究竟有哪些问题可以用动态规划解决。知己知彼,你想把动态规划作为你的面试武器之一,就得足够了解它;而应对面试,总结、归类问题其实是个不错的选择,这在我们刷题的时候其实也能感觉得到。那么,我们就针对以上两点,系统地谈一谈究原创 2022-01-18 10:09:08 · 1008 阅读 · 0 评论 -
大厂都爱考算法,那怎么学习算法呢
如果最近你出去面试,不管是大厂还是小的创业公司,最后都会问你几个算法题。看似不怎么实用的算法,成为很多面试者的拦路虎,那对于算法,我们应该怎么面对,又有没有好的方法在短期内提升算法的解题能力呢?对于这个问题,很难给出明确的答复。首先,算法确实很重要,它能将你和普通的程序员区分开来,助你拿到⼤⼚的 Offer。其次,算法更多的好处是隐性的、潜移默化的,会给你带来很多隐形的好处。很多时候,公司在招人的时候,会要求面试者除了经验丰富之外,还要求技术要好,基础扎实,熟练掌握算法和数据结构,这时候算法面试就显得尤为原创 2020-11-13 12:08:25 · 552 阅读 · 0 评论 -
初识动态规划算法
前面,我们对动态规划算法做了一个简单的介绍:算法之动态规划算法简介。下面,我们就动态规划算法做一下具体的介绍。硬币找零问题虽然说硬币找零在现实生活中越来越少,但它仍然活跃在编程领域和面试问题当中,主要还是因为它极具代表性,也能多方面考察一个开发人员或面试者解决问题的能力。首先,我们来看看这个算法问题的具体描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], … c[n],同时还有一个总金额 k,编写一个函数计算出最少需要几枚硬币凑出这个金额 k?同时,每种硬币的个数不限,如原创 2020-10-16 16:48:34 · 1433 阅读 · 0 评论 -
图算法之bfs、dfs、prim、Dijkstra
# 概述 在图算法中经常要执行遍历每个顶点和每条边的操作,即图搜索。许多图算法都以图搜索为基础,如2-着色问题、连通性计算基于深度优先搜寻(depth-first search, DFS),而无权最短路径则基于广度优先搜索(breadth-first search, BFS)。基于搜索的算法还包括计算最小生成树的Prim算法以及计算最短路径的Dijkstra算法。图实现算法在现实的算法结构中占据重原创 2017-04-07 18:05:25 · 4086 阅读 · 0 评论 -
红黑树深入剖析及Java实现
概述红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。二叉查找树(BST)二叉查找树(Bina原创 2017-02-14 22:40:09 · 5036 阅读 · 6 评论 -
数据结构之二叉树
树定义:满足以下条件的就是树: 1. 有且仅有一个特定的称为根Root的结点。 2. 当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一个棵树,并称为根的子树。树是数据结构中一种常见的数据结构,比如我们排序中常见的二叉树,红黑树等。最常见的是树形表示法和广义表表示法。树的结构示意图如下所示: 二叉树二叉树是一种特殊的顺序树,它有左右两个孩子子树,即左右孩子顺序原创 2017-02-14 21:06:05 · 2948 阅读 · 0 评论 -
数据结构之图
基本概念图(Graph):图(Graph)是一种比线性表和树更为复杂的数据结构。 图结构:是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系。即结点之间的关系可以是任意的,图中任意元素之间都可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 线性结构:是研究数据元素之间的一对一关系。在这种结构中,除第一个和最后一个元素外,任何原创 2016-12-22 22:07:09 · 4375 阅读 · 0 评论 -
一起聊聊什么是P问题、NP问题、NPC问题
概念P问题:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。通常NOI和NOIP不属于P类问题,我们常见到的一些信息奥赛的题目都是P问题。 NP问题:可以在多项式的时间里猜出一个解的问题。NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。 所有的P类问题都是NP问题。也就原创 2016-12-22 18:13:39 · 11560 阅读 · 2 评论