
移动开发
文章平均质量分 95
普通网友
这个作者很懒,什么都没留下…
展开
-
【鸿蒙基于API 13实战开发】—— FA模型:DataAbility组件(一)
DataAbility,即"使用Data模板的Ability",主要用于对外部提供统一的数据访问抽象,不提供用户交互界面。DataAbility可由PageAbility、ServiceAbility或其他应用启动,即使用户切换到其他应用,DataAbility仍将在后台继续运行。使用DataAbility有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。DataAbility既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。原创 2024-11-22 17:35:08 · 1121 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— FA模型: ServiceAbility组件(二)
通过DevEco Studio开发平台创建ServiceAbility时,DevEco Studio会默认生成onStart、onStop、onCommand方法,其他方法需要开发者自行实现,接口说明参见前述章节。开发者也可以添加其他Ability请求与ServiceAbility交互时的处理方法,示例如下:原创 2024-11-22 16:12:16 · 652 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— FA模型: ServiceAbility组件(一)
ServiceAbility,即"基于Service模板的Ability",主要用于后台运行任务(如执行音乐播放、文件下载等),不提供用户交互界面。ServiceAbility可由其他应用或PageAbility启动,即使用户切换到其他应用,ServiceAbility仍将在后台继续运行。原创 2024-11-22 15:37:36 · 629 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— FA模型开发:PageAbility组件实践(二)
当PageAbility的启动模式设置为单例时(具体设置方法和典型场景示例见 PageAbility的启动模式 ,缺省情况下是单实例模式),若PageAbility已被拉起,再次启动PageAbility会触发onNewWant回调(即非首次拉起)。应用开发者可以通过want传递启动参数,例如开发者希望指定页面启动PageAbility,可以通过want中的parameters参数传递pages信息,具体示例代码如下:原创 2024-11-22 14:35:23 · 335 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— FA模型开发:PageAbility组件实践(一)
通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会在app.js/app.ets中默认生成onCreate()和onDestroy()方法,其他方法需要开发者自行实现。接口说明参见前述章节,创建PageAbility示例如下:原创 2024-11-22 13:41:21 · 707 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— FA模型开发:PageAbility组件
PageAbility是包含UI、提供展示UI能力的应用组件,主要用于与用户交互。开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会自动创建相关模板代码。PageAbility相关能力通过单独的featureAbility实现,生命周期相关回调则通过app.js/app.ets中各个回调函数实现。原创 2024-11-21 22:05:57 · 876 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 进程模型&线程模型分析
在上述模型基础上,对于系统应用可以通过申请多进程权限(如下图所示),为指定HAP配置一个自定义进程名,该HAP中的UIAbility、DataShareExtensionAbility、ServiceExtensionAbility就会运行在自定义进程中。不同的HAP可以通过配置不同的进程名运行在不同进程中。原创 2024-11-21 21:30:46 · 1145 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起文件处理类应用(startAbility)
例如,浏览器下应用下载PDF文件,可以调用此接口选择文件处理应用打开此PDF文件。开发者需要在请求中设置待打开文件的URI路径( uri )、文件格式( type )等字段,以便系统能够识别,直接拉起文件打开应用或弹出一个选择框,让用户选择合适的应用来打开文件,效果示意如下图所示。原创 2024-11-21 20:34:25 · 859 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起图片编辑类应用(startAbilityByType)
当应用自身不具备图片编辑能力、但存在图片编辑的场景时,可以通过startAbilityByType拉起图片编辑类应用扩展面板,由对应的应用完成图片编辑操作。图片编辑类应用可以通过PhotoEditorExtensionAbility实现图片编辑页面,并将该页面注册到图片编辑面板,从而将图片编辑能力开放给其他应用。原创 2024-11-21 17:27:01 · 675 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起金融类应用(startAbilityByType)
startAbilityByType接口中type字段为finance,对应的wantParam参数:原创 2024-11-21 16:18:33 · 635 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起邮件类应用(mailto方式)
通过mailto电子邮件协议,可以创建指向电子邮件地址的超链接,方便用户通过网页或应用中的超链接直接跳转电子邮件应用。同时,支持在mailto:的相关字段中定义邮件的收件人、主题、正文内容等,节省用户编辑邮件的时间。原创 2024-11-21 15:09:26 · 1526 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起邮件类应用(startAbilityByType)
在module.json5中新增 linkFeature 属性并设置声明当前应用支持的特性功能,从而系统可以从设备已安装应用中找到当前支持该特性的应用,取值范围如下:原创 2024-11-21 14:37:18 · 943 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 拉起导航类应用(startAbilityByType)
本章节主要介绍拉起方应用如何通过指定应用类型、而非某个具体的应用,来实现应用跳转。通过startAbilityByType接口拉起垂类面板:调用startAbilityByType接口拉起对应的垂域面板(目前支持拉起导航、金融、邮件类应用面板),该面板将展示目标方接入的垂域应用,由用户选择打开指定应用以实现相应的垂类意图。通过mailto方式跳转电子邮件应用:通过mailto电子邮件协议,可以创建指向电子邮件地址的超链接,方便用户通过网页或应用中的超链接直接跳转电子邮件应用。原创 2024-11-21 13:49:42 · 388 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 显式Want跳转切换应用链接跳转适配
在API12及以后版本,系统框架增加了应用间显式跳转的限制,应用间的跳转需要通过link跳转的方式实现。原创 2024-11-20 22:07:15 · 712 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 使用App Linking实现应用间跳转
使用App Linking进行跳转时,系统会根据接口传入的uri信息(HTTPS链接)将用户引导至目标应用中的特定内容,无论应用是否已安装,用户都可以访问到链接对应的内容,整个跳转体验相比Deep Linking方式更加顺畅。例如:当开发者使用App Linking接入“扫码直达”服务后,用户可通过控制中心扫一扫等系统级扫码入口,扫描应用的二维码、条形码并跳转到开发者应用对应服务页,实现一步直达的体验。说明。原创 2024-11-20 21:09:55 · 1205 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 使用Deep Linking实现应用间跳转
采用Deep Linking进行跳转时,系统会根据接口中传入的uri信息,在本地已安装的应用中寻找到符合条件的应用并进行拉起。当匹配到多个应用时,会拉起应用选择框。原创 2024-11-20 20:39:32 · 628 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 应用启动框架AppStartup
应用启动时通常需要执行一系列初始化启动任务,如果将启动任务都放在应用主模块(即entry类型的 Module )的 UIAbility 组件的 onCreate 生命周期中,那么只能在主线程中依次执行,不但影响应用的启动速度,而且当启动任务过多时,任务之间复杂的依赖关系还会使得代码难以维护。AppStartup提供了一种简单高效的应用启动方式,可以支持任务的异步启动,加快应用启动速度。同时,通过在一个配置文件中统一设置多个启动任务的执行顺序以及依赖关系,让执行启动任务的代码变得更加简洁清晰、容易维护。原创 2024-11-20 17:29:29 · 1255 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— 组件启动规则(Stage模型)
启动组件是指一切启动或连接应用组件的行为:启动 UIAbility 、ServiceExtensionAbility、DataShareExtensionAbility,如使用 startAbility() 、startServiceExtensionAbility()、 startAbilityByCall() 、 openLink() 等相关接口。原创 2024-11-20 16:05:27 · 815 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— Want对象
Want是一种对象,用于在应用组件之间传递信息。其中,一种常见的使用场景是作为startAbility()方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。图1Want用法示意。原创 2024-11-20 15:11:36 · 906 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— Context 场景应用
Context 是应用中对象的上下文,其提供了应用的一些基础信息,例如 resourceManager (资源管理)、 applicationInfo (当前应用信息)、 dir (应用文件路径)、 area (文件分区)等,以及应用的一些基本方法,例如createBundleContext()、 getApplicationContext() 等。UIAbility 组件和各种 ExtensionAbility 派生类组件都有各自不同的Context类。原创 2024-11-20 14:22:51 · 963 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】—— AbilityStage组件容器
当系统资源不足时,系统会通过多种方式从应用中回收内存,必要时会完全停止应用,从而释放内存用于执行关键任务。为了进一步保持系统内存的平衡,避免系统停止用户的应用进程,可以在AbilityStage中的onMemoryLevel()生命周期回调中订阅系统内存的变化情况,释放不必要的资源。打开MyAbilityStage.ets文件,导入AbilityStage的依赖包,自定义类继承AbilityStage并加上需要的生命周期回调,示例中增加了一个 onCreate() 生命周期回调。原创 2024-11-20 13:39:45 · 902 阅读 · 0 评论 -
【鸿蒙基于API 13实战开发】ExtensionAbility组件——EmbeddedUIExtensionAbility
EmbeddedUIExtensionAbility是EMBEDDED_UI类型的ExtensionAbility组件,提供了跨进程界面嵌入的能力。EmbeddedUIExtensionAbility需要和EmbeddedComponent一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的EmbeddedUIExtensionAbility提供的UI。原创 2024-11-19 22:21:48 · 708 阅读 · 0 评论 -
【鸿蒙性能优化实战】性能测试工具SmartPerf Editor
SmartPerf Editor是一款PC端桌面应用,通过监测、采集应用运行时FPS、CPU、GPU、Memory、Battery、Network等性能数据,帮助开发者了解应用的性能状况。SmartPerf Editor还集成了DrawingDoc功能,可录制Render Service绘制指令,回放并生成不同图形库文件。通过逐帧逐绘制指令回放,来识别是否存在冗余绘制、是否可以优化绘制指令的数量,从而提升页面绘制性能。原创 2024-11-18 18:00:59 · 702 阅读 · 0 评论 -
【鸿蒙性能优化实战】耗时分析器Time Profiler
DevEco Studio集成的DevEco Profiler性能调优工具(以下简称为Profiler),提供Time、Allocation、Snapshot、CPU等场景化分析任务类型。开发应用或服务过程中,如果遇到卡顿、加载耗时等性能问题,开发者通常会关注相关函数执行的耗时情况。Profiler提供的Time场景分析任务,可在应用/服务运行时,展示热点区域内基于CPU和进程耗时分析的调用栈情况,并提供跳转至相关代码的能力,使开发者更便捷地进行代码优化。原创 2024-11-18 16:32:25 · 316 阅读 · 0 评论 -
【鸿蒙性能优化实战】内存快照Snapshot Profiler
DevEco Studio集成的DevEco Profiler性能调优工具(以下简称为Profiler),提供Time、Allocation、Snapshot、CPU等场景化分析任务类型。内存快照(Snapshot)是一种用于分析应用程序内存使用情况的工具,通过记录应用程序在运行时的内存快照,可以快速查看应用程序在某一时刻的内存占用情况以及内存占用详情。原创 2024-11-18 15:23:13 · 1026 阅读 · 0 评论 -
【鸿蒙性能优化实战】启动分析工具Launch Profiler
其中Launch主要用于分析应用或服务的启动耗时,分析启动周期各阶段的耗时情况、核心线程的运行情况等,协助开发者识别启动缓慢的原因。可以发现aboutToAppear函数的耗时占据UI Ability OnForeground阶段的大部分时间,结合应用代码将aboutToAppear函数中的耗时计算任务以异步延迟的方式处理后,可以得到如下“Launch”泳道。如选择的是正在运行的应用,在启动该分析任务时,会先将应用关停,再自动拉起应用,进行数据录制,结束录制后可正常进入解析阶段。原创 2024-11-18 15:03:47 · 319 阅读 · 0 评论 -
【鸿蒙性能优化实战】帧率分析工具 Frame Profiler
上述案例中的场景明显属于前者中App侧的发送帧卡顿,针对前一种现象可以点击查看卡顿帧的Details信息,点击 以跳转到此帧对应的trace数据。DevEco Studio内置Profiler分析调优工具,其中Frame分析调优功能,用于录制GPU数据信息,录制完成展开之后的子泳道对应录制过程中各个进程的帧数据,主要用于深度分析应用或服务卡顿丢帧的原因。Frame泳道展开之后的子泳道对应录制过程中各个进程的帧数据,在RS Frame和App Frame标签的泳道中绿色帧为正常帧,红色帧为卡顿帧。原创 2024-11-18 14:12:49 · 956 阅读 · 0 评论 -
【鸿蒙性能优化实战】内存分析器Allocation Profiler
DevEco Studio集成的DevEco Profiler性能调优工具(以下简称为Profiler),提供Time、Allocation、Snapshot、CPU等场景化分析任务类型。开发者可使用Profiler的Allocation内存分析器,在应用或服务运行时实时显示内存使用情况,识别可能会导致应用卡顿、内存泄漏、内存抖动的问题,或找到导致内存瓶颈的问题。原创 2024-11-17 21:48:52 · 745 阅读 · 0 评论 -
【鸿蒙性能优化实战】页面布局检查器ArkUI Inspector
DevEco Studio内置ArkUI Inspector工具,开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具,开发者可以快速定位布局问题或其他UI相关问题,同时也可以观察和了解不同组件之间的布局关系和属性,学习如何通过布局属性来控制组件的显示方式。原创 2024-11-17 21:14:27 · 581 阅读 · 0 评论 -
【鸿蒙性能优化实战】应用性能分析工具CPU Profiler使用教程
本文档介绍应用性能分析工具CPU Profiler的使用方法,该工具为开发者提供性能采样分析手段,可在不插桩情况下获取调用栈上各层函数的执行时间,并展示在时间轴上。开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况,进而发现热点函数及性能瓶颈,进行应用层性能优化。原创 2024-11-17 20:10:11 · 781 阅读 · 0 评论 -
使用lycium工具快速编译三方库
随着技术的不断发展,移动应用开发需求也越来越大,在传统移动应用开发过程中,开发者需要面对较为繁琐的配置和环境搭建,这使开发成本变得更高。为解决这类问题,通过使用lycium工具,可以帮助开发者实现快速开发,简化开发流程,减少开发耗时。lycium是一款协助开发者通过shell语言实现C/C++三方库快速交叉编译,并在HarmonyOS上快速验证的编译框架工具。开发者只需要设置对应C/C++三方库的编译方式以及编译参数,通过lycium就能快速的构建出能在HarmonyOS上运行的二进制文件。原创 2024-11-17 19:05:15 · 638 阅读 · 0 评论 -
Configure构建工程配置HarmonyOS编译工具链
Configure是一个用于自动化软件编译和安装的工具,它可以帮助开发者编译和安装源代码,以便生成可执行文件和库文件。在编译和安装软件时,通常需要一系列步骤,例如设置编译选项、检查依赖库、生成配置文件等,Configure可以通过读取软件的源代码,自动化这些步骤,简化软件的编译和安装过程。其原理是根据系统环境和用户设置来生成Makefile文件,Makefile文件是一个包含编译选项和依赖关系的脚本,可以自动化编译和安装软件。原创 2024-11-15 21:52:39 · 648 阅读 · 0 评论 -
Make构建工程配置HarmonyOS编译工具链
Make是一个标准的Unix构建工具,用于自动化编译过程。它可以读取Makefile中的规则和依赖项,并根据这些规则来构建源代码,Make会检查源代码文件的时间戳,以确定哪些文件需要重新编译。Make会自动解决依赖关系并按正确的顺序编译源文件,通过在终端中运行Make命令,Make将根据Makefile中的指令逐步构建代码,生成最终的可执行程序或库文件。Makefile文件是一个文本文件,它定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,以及哪些文件需要重新编译。原创 2024-11-15 21:21:02 · 879 阅读 · 0 评论 -
CMake构建工程配置HarmonyOS编译工具链
CMake是一个跨平台的构建工具,用于管理构建过程、编译、链接和打包软件项目,它可以生成Makefile等用于不同操作系统和编译器的构建脚本。CMake的配置过程是跨平台的,因此可以在不同的操作系统上运行,例如Linux、Windows和macOS。配置(Configuration):配置阶段是CMake解析CMakeLists.txt文件的过程。在配置阶段,CMake会读取CMakeLists.txt文件,并执行其中的命令。原创 2024-11-15 20:24:03 · 1040 阅读 · 0 评论 -
GN构建工程配置HarmonyOS编译工具链
以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系统的解决方案级版本构建,以及用于支撑应用开发者使用IDE开发的SDK开发套件的构建。支持芯片解决方案厂商的灵活定制和独立编译。**Ninja:**是一个专注于快速编译的小型构建系统。**GN:**Generate Ninja的缩写,用于产生Ninja文件。在对webRTC的GN工程进行HarmonyOS工具链适配过程中,遇到了一些常见问题场景。下面针对这些问题做一个具体分析。原创 2024-11-15 17:16:27 · 1109 阅读 · 0 评论 -
鸿蒙原生APP开发之常见导航样式案例开发实践
不同的页签导航在基本功能上,会因产品形态的不同衍生出不同样式的UI效果。本文为满足开发者对于不同导航样式的需求,介绍了多种导航的实现。本文基于常见应用的页签导航效果,给出对应的实现方案。不同页签导航效果如下图所示。图1底部导航效果示意图图2顶部导航效果示意图图3侧边导航效果示意图。原创 2024-11-15 15:52:23 · 664 阅读 · 0 评论 -
鸿蒙原生APP开发之评论回复弹窗开发实践
评论回复模块在图文和视频应用中被广泛使用,包含编辑区域、好友列表、常用表情列表和表情面板(见下图),它允许用户进行输入文字、表情、@好友、选择图片等操作。该模块一般以弹窗的形式展现给用户,通常在图文、视频界面中直接弹出,或者在评论列表上层弹出,本文将从评论列表上层弹出这种相对复杂的场景出发,重点对以下几个方面进行介绍,为开发者提供评论回复弹窗模块开发的最佳实践。弹窗组件的选型以及最终方案的实现软键盘和表情面板切换的适配编辑区域主要细节功能的实现图1效果图模块名称对应图1中序号评论列表1。原创 2024-11-15 15:13:25 · 894 阅读 · 0 评论 -
鸿蒙原生APP开发之轮播实现图文作品
图文作品播放是一种常见的功能,它的特点是:由多张图片组成一个合集,图片可以自动进行轮播,也可以手动去进行图片切换。自动轮播时,图片下方的进度条缓慢加载至完成状态;手动切换时,图片下方的进度条瞬间切换至已完成状态或未完成状态。由于原生Swiper组件自带的导航点指示器目前只支持数字和圆点的样式,不支持对应的特殊样式,因此需要通过自定义指示器(即进度条)来模拟底部的导航条效果。本文中将通过场景介绍、技术选型和实现方案三个部分来进行介绍。常见的图文作品,可以自动循环播放和手动切换播放合集中的图片。原创 2024-11-15 14:35:41 · 969 阅读 · 0 评论 -
鸿蒙原生APP开发之Image白块解决问题
在通过Image组件加载网络图片时,通常会经历四个关键阶段:组件创建、图片资源下载、图片解码和刷新。当加载的图片资源过大时,Image组件会在图片数据下载和解码完成后才刷新图片。这一过程中,由于图片下载较耗时,未成功加载的图片常常表现为空白或占位图(一般为白色或淡色),这可能引发“Image 白块”现象。为了提升用户体验并提高性能,应尽量避免这种情况。图1Image加载网络图片两种方式对比。原创 2024-11-15 13:44:22 · 1187 阅读 · 0 评论 -
鸿蒙原生APP开发之基于HMRouter路由框架的页面开发场景解决方案
HMRouter是HarmonyOS上页面跳转的场景解决方案,主要解决应用内原生页面间相互跳转的问题,开发者可以参考 HMRouter使用说明 进行安装配置与快速上手,本文主要以实际开发中的各项场景为例,介绍HMRouter路由框架的使用。使用自定义注解实现路由跳转。支持HAR/HSP。支持路由拦截、路由生命周期。简化自定义动画配置:配置全局动画,单独指定某个页面的切换动画。支持不同的页面类型:单例页面、Dialog页面。原创 2024-11-14 22:28:46 · 771 阅读 · 0 评论