- 博客(145)
- 资源 (9)
- 收藏
- 关注

原创 Flutter在鸿蒙HarmonyOS NEXT实践
移动端开发中少不了一种技术栈叫做跨平台,目前常见的跨平台三方框架为Flutter、ArkUIX、React Native、Taro、WEEX、UniApp等,目前跨平台占比多的就属Flutter。这篇分享下Flutter在鸿蒙HarmonyOS NEXT实践。
2024-12-23 11:11:31
3384

原创 鸿蒙HarmonyOS NEXT应用层架构
从开发模型上可以了解到,Feature类型的HAP,而对于不需要通过Ability承载的功能,根据是否需要实现按需加载,可以选择设计为HAR模块或者HSP模块,编译后对应HAR包或者HSP包。在部署模型中,每个Entry类型的HAP代表了应用的入口点,而Feature类型的HAP则包含了应用的特定功能模块。应用可以共享和调用这些公共能力。也可以看到产物为app后缀,有不同的hap包构成,产物支持phone和2in1,在实际操作中我们知道app包是提交应用市场的包,测试和开发阶段只能使用hap后缀的包。
2024-10-31 23:25:13
1775

原创 imagepicker(图片选择器)
图片选择器简介imagepicker是一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、压缩图片的开源工具库,目前最新版本V1.3.0。从相册里面选择图片或者拍照获取照片 浏览选择的本地或者网络图片 保存图片更新说明v1.3.0(2018/8/22)适配7.0以及以上系统,私有文件访问受限报错 修复图片列表页面更改相册,列表无法刷新的问题 优化项目v1...
2016-10-22 11:19:41
25024
3
原创 鸿蒙HarmonyOS NEXT中网络库的选择
RCP提供了网络数据请求功能,相较于Network Kit中HTTP请求能力,RCP更具易用性;相较于Axios中,更加贴近HarmonyOS NEXT系统需求,而且官方也建议使用RCP网络请求框架,所以建议大家使用RCP或者基于RCP自研。
2025-03-31 16:25:31
655
原创 鸿蒙阔折叠Pura X外屏开发适配
自定义弹框可能出现弹窗内容截断,需要进行自定义弹窗适配小窗口使用constraintSize设置约束尺寸,自定义弹窗的最大高度不超过父组件高度的90%。同时最外层使用Scroll组件自动支持滚动。
2025-03-31 14:24:46
528
原创 鸿蒙意图框架Intents Kit如何使用
在意图执行绑定FormExtensionAbility的onAddForm(want: Want)中获取运行态意图框架传入的意图名(预定义keyName为ohos.insightIntent.executeParam.name)和意图执行参数(预定义keyName为ohos.insightIntent.executeParam.param);通过意图名称,识别播放歌曲意图(PlayMusic),在对应的方法中传递意图参数(param),并拉起对应落地页(如歌曲落地页)。意图执行组件为form的意图调用。
2025-03-31 14:11:06
372
原创 鸿蒙如何通过日程管理提高直播上线率
目前直播是比较常见的业务,在直播时,上线的人数远低于预约的人数,如何降低用户流失?目前方式主要通过站内push、服务号、短信等方式。在鸿蒙单架构提供了日常管理功能,通过日常管理可以更好的触达用户,提高上线人数。
2025-03-31 13:49:37
907
原创 鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程
什么是数据迁移,对用户来讲就是本地数据的迁移,终端设备从HarmonyOS 3.1 Release API 9及之前版本(单框架)迁移到HarmonyOS NEXT(双框架)后保证本地数据不丢失。例如,我在某APP上面是登录状态,从单框架升级到双框架打开APP后依旧是登录状态,这就是数据迁移,并不是云端数据的处理,是本地数据的处理。当然,这只是其中一个用户信息,除用户信息外还有一系列开发者用到的设备数据等等,需要迁移。
2025-03-30 23:59:37
696
原创 六张图解决鸿蒙HarmonyOS NEXT中列表加载慢丢帧问题
随着信息数据的累积,特别是一些新闻应用、购物应用、聊天应用,列表数据往往会达到上万条,针对这类大量数据加载的长列表应用,如何对长列表的性能进行优化是非常重要的。● 动态预加载:根据历史任务加载耗时情况,动态调整屏幕可视区域外数据预取数量,配合懒加载设置,可在列表不断滑动时,屏幕可视区外实时更新列表数据,通过预取和预渲染数据提升列表滑动体验。● 在一个自定义父组件下创建可复用的子组件时,若其父自定义组件的可复用节点缓存中有对应类型的可复用子组件,会通过更新可复用子组件的方式,快速创建可复用子组件;
2025-03-27 20:36:23
613
原创 鸿蒙HarmonyOS NEXT之生命周期
HarmonyOS NEXT的生命周期分为UIAbility生命周期、页面生命周期、组件生命周期三大类。
2025-03-26 23:57:08
651
原创 鸿蒙HarmonyOS NEXT之无感监听
在鸿蒙中Navigation被用来作为路由栈进行页面跳转,如果你想知道页面的路由栈,以及前后切换的页面,可以通过官方提供的无感监听的页面切换navDestinationSwitch。在鸿蒙中页签Tabs控件的使用频率比较高,如果想知道哪个子TabContent被点击了,就可以使用监听TabContent页面的切换事件。addBefore接口执行完成后,都会先执行插入的函数逻辑,再执行指定类对象的原方法。通过插桩处理,在弹框前后做一些逻辑,例如在弹框前后设置变量,就可以判断弹框是否有触发。
2025-03-26 21:03:12
429
原创 鸿蒙HarmonyOS NEXT界面如何一次开发多端部署
均分能力通过将Row组件、Column组件或Flex组件的justifyContent属性设置为FlexAlign.SpaceEvenly实现,即子元素在父容器主轴方向等间距布局,相邻元素之间的间距、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样。栅格组件将其所在的区域划分为有规律的多列,通过调整不同断点下的栅格组件的参数以及其子组件占据的列数等,实现不同的布局效果。分类:拉伸能力、均分能力、占比能力、缩放能力、延伸能力、隐藏能力、折行能力 7种布局能力。以下是总结的应用中的典型布局场景。
2025-03-26 13:32:26
1076
原创 鸿蒙HarmonyOS NEXT应用崩溃分析及修复
如何保证应用的健壮性,其中一个指标就是看崩溃率,如何降低崩溃率,就需要知道存在哪些崩溃,然后对症下药,解决崩溃。那么鸿蒙应用中存在哪些崩溃类型呢?又改如何解决呢?
2025-03-21 23:15:02
942
2
原创 清华DeepSeek学习手册全5册
深度学习是未来技术发展的核心驱动力,而《DeepSeek学习手册》则是你通往技术巅峰的指南针。无论你是想入门深度学习,还是想进一步提升技能,这套手册都能为你提供强大的支持。
2025-02-25 14:34:54
504
原创 10分钟掌握DeepSeek:清华大神手把手教你从入门到精通!
安装:pip install deepseek加载数据:ds.load_dataset('your_data.csv')预处理:ds.preprocess(data, method='normalization')选择模型:model = ds.create_model('CNN')训练模型:model.train(data, epochs=10)评估与优化:model.evaluate(data) 和 ds.optimize(model, data)
2025-02-25 07:34:27
508
原创 鸿蒙开发者效率翻倍秘诀:用DeepSeek搞定这5大高频痛点!
你是否还在耗时调试ArkUI布局?被HarmonyOS多设备适配搞到崩溃?每天重复造轮子写基础代码?别急,这5个DeepSeek神操作能让你的开发效率飙升200%!
2025-02-25 00:06:39
375
原创 鸿蒙HarmonyOS NEXT如何生成设备唯一标识符
首先我们需要知道在鸿蒙上标识符的分类,主要为UDID、OAID、AAID、ODID。Asset Store Kit(关键资产存储开发套件)包含了关键资产存储服务(ASSET)开放的接口能力集合,提供了用户短敏感数据的安全存储及管理能力。其中,短敏感数据可以是密码类(账号/密码)、Token类(应用凭据)、其他关键明文(如银行卡号)等长度较短的用户敏感数据。为什么要说到资产?因为资产数据可以存到设备后,不会随着APP的卸载而消失,只要没有删除该资产或者恢复出厂设置,资产数据就不会消失。
2024-12-20 14:55:55
1228
原创 鸿蒙HarmonyOS NEXT私服搭建流程
在组件化开发中,私仓的作用不言而喻。例如在鸿蒙项目中如果不想本地引用har包、hsp包,就要发布到私仓中引用使用,如果发布到华为公仓中使用是不安全的。本篇文章分享下如何在鸿蒙HarmonyOS NEXT下搭建属于自己的私仓,以及如何使用。
2024-12-11 22:10:51
1053
原创 鸿蒙HarmonyOS NEXT沉浸式技术方案
滚动类容器内的组件不建议设置expandSafeArea属性,如果设置,需要按照组件嵌套关系,将当前节点到滚动类祖先容器间所有直接节点设置expandSafeArea属性,否则expandSafeArea属性在滚动后可能会失效。也就是默认全栈统一沉浸式,路由拦截器拦截,不需要沉浸式页面设置顶部和底部margin,顶部为动态获取状态栏高度,底部为动态获取系统导航栏高度。组件延伸到安全区域下,在安全区域处的事件,如点击事件等可能会被系统拦截,优先给状态栏等系统组件响应。
2024-10-31 23:57:13
466
原创 鸿蒙HarmonyOS NEXT一多适配技术方案
一多适配就要区分设备类型,直板机、折叠屏、pad、2in1等。左右布局适配,布局使用GridRow或GridCol。断点全局设置以及获取,断点各业务页面获取。List和WaterFlow多列设置。Swipe和Grid多列动态设置。
2024-10-31 20:54:35
1122
原创 鸿蒙之setTimeout问题
开启日志并打印,发现会执行Timer has been successfully deleted.TimerID,代表setTimeout被取消,打印TimerID,发现为0,为什么是0,由于场景比较特殊这个setTimeout是项目中第一个setTimeout,经确认TimerID是从0开始累加。发现有其他地方TimerID默认值不规范,例如初始化为0或者在最后清空时候未做判断,导致被取消。setTimeout箭头函数里面,延时后业务逻辑不执行,导致出现业务bug。
2024-09-25 10:02:58
532
1
原创 推荐一个玩Android客户端
玩Android客户端项目开源地址为什么开发这个应用wanandroid网站不错,有一批码友更新学习心得,而且也有开放的api。做个客户端方便小老弟,也可能是老大哥,刷文章,也有可能是刷妹子,刷开眼视频;试手项目,方便自己技术栈更新。第一版先简单搭建,日后再说,也有可能不说了。下载地址蒲公英下载功能介绍「首页」wanandroid热门博文和热门项目列表banner模块轮播图channel模块项目、体系和导航、问答、面试、妹子「公众号」Android开发相关公众
2020-10-20 17:12:07
441
2
原创 常见排序算法
时间复杂度和空间复杂度O(1) 常数O(n) 线性O(n^2) 平方O(n^3)立方O(n!)阶乘O(logn) 对数O(nlogn)O(2^) 指数时间复杂度顺序从小到大的顺序O(1)<O(log n) < O(n )< O(nlogn) < O(n^2) <O(n^3) < O(2^n) <O(n!) < O(n^n)排序分类以及时间复杂度类型排序方法时间复杂度-平均情况时间复
2020-07-21 16:46:00
357
原创 Kotlin高阶函数的使用
高阶函数定义lambda表达式定义:Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)函数类型 (String,Int)->Unit高阶函数定义:参数类型是函数类型,或者返回值是函数类型的函数称为高阶函数 fu
2020-07-16 18:00:13
825
原创 Kotlin中协程的使用
文章目录官方介绍协程协程定义协程的基本用法supend(挂起函数)是什么怎么自定义suspend函数?协程如何确保主线程安全协程的挂起本质协程的创建以及取消协程的启动协程的结构化并发,取消协程协程中异常处理官方介绍协程协程定义协程定义:kotlin官方封装的线程api使用方便同步方式写出异步代码挂起函数执行完毕之后,协程会把它切换到原先的线程的线程。协程的基本用法常规函数中一般都有:call and return,协程在此之外添加了suspend和resume.suspend 用于
2020-07-16 14:56:03
1139
原创 Kotlin基础语法使用
文章目录基础数据类型可见性修饰符控制流字符串模板变量空安全设计平台类型类型判断获取class对象声明接⼝/抽象类/枚举/注解数组与集合类和对象data class(数据类,实体类)objecCompanion objec 伴生对象函数构造函数函数top-level functions (顶层函数)inline(内联函数)高阶函数扩展Kotlin 标准函数基础数据类型整数类型大小(比特数)最小值最大值Byte8-128127Short16-32768327
2020-07-15 16:46:19
664
原创 Constraintlayout相关使用
ConstraintlayoutAndroid常见布局LinearLayoutRelativeLayoutFrameLayoutTableLayoutGridLayoutAbsoluteLayout避免布局嵌套,在一定程度上取代LinearLayout、RelativeLayout。布局居中于父容器 app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
2020-07-14 18:26:57
255
原创 Android 8.0(O)+后台服务适配
问题Not allowed to start service Intent XXX : app is in background uid UidRecord项目很早targetSdkVersion升到了28(Android 9.0§),一直忙业务,最近查看了下后台报错信息,发现几个崩溃次数比较多的问题,共同点都是项目中的后台service,报错信息如下Not allowed to start service Intent XXX : app is in background uid UidRecord
2020-06-28 22:53:11
1102
原创 设计模式总结
遵守六大原则SOLID介绍Single Responsibility Principle:单一职责原则Open Closed Principle:开闭原则Liskov Substitution Principle:里氏替换原则Law of Demeter:迪米特法则Interface Segregation Principle:接口隔离原则Dependence Inversion P...
2019-07-04 17:58:09
366
原创 Android进程保活处理
介绍项目中有很多业务有时需要保活,用笔者之前的项目举例。其中之一业务需要亮屏开门,app在后台情况下,点亮手机屏幕,需要做开门操作。在例如需要根据定位实时上报位置。这些前提都是app在后台,但是手机内存不足时,app会被系统回收,这时候就需要App进程保活,以及拉活处理。App进程保活分为2种情况:1:提高进程优先级,降低进程被杀死的概率2:进程被杀之后,通过拉活保活方式提高进程优先级...
2019-06-11 18:02:00
534
原创 leakcanary1.5源码分析
介绍内存泄漏检测工具,square公司出品,github地址https://github.com/square/leakcanary。gradle引用:debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'releaseCompile 'com.squareup.leakcanary:leakcanary-android-...
2019-06-09 19:21:02
272
原创 glide4.9.0源码解析
引用implementation 'com.github.bumptech.glide:glide:4.9.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'使用Glide.with(GlideActivity.this) .load(url) .centerCr...
2019-06-06 18:25:44
985
原创 retrofit2.5.0源码分析
简介Retrofit是目前比较流行的网络框架,它是以restful风格的请求方式,将接口请求使用动态代理方式将获取方法名,方法注解,方法参数注解,方法值翻译成http请求,内部封装了以okhttp作为底层的网络请求框架。除此之外有强大可扩展型,以及返回结果支持各种格式转换,以及对rxjava的支持。gradle引用implementation 'com.squareup.retrofit2:...
2019-06-04 11:34:04
374
原创 eventbus3.1.1源码分析
文章目录使用gradle引入注册订阅者、解除订阅者,订阅方法发送事件问题?源码解读register源码解读post源码解读unRegister源码解读总结注册逻辑发送逻辑解除注册逻辑使用gradle引入implementation 'org.greenrobot:eventbus:3.1.1'注册订阅者、解除订阅者,订阅方法//01EventBus.getDefault().regi...
2019-05-28 09:58:47
493
原创 git文件名大小写无法修改的问题
问题背景:修改本地项目中一个文件夹的文件名,collectCard修改为collectcard。然后git diff查看发现没有文件改变,明明改变了文件夹名字,却提交不了改变?原因:git默认配置为忽略大小写,因此无法正确检测大小写的更改解决方法:方案一:配置gitgit config core.ignorecase false关闭git忽略大小写配置,即可检测到大小写名称更改方...
2019-05-16 14:32:10
3992
原创 Rxjava2.0操作符总结
前言Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎,它提供了丰富 & 功能强大的操作符。
2019-03-28 23:41:06
343
原创 Flutter之layout页面布局
官方传送门: https://flutter.dev/docs/development/ui/widgets/layoutflutter的layout分类Single-child layout widgets这种布局指父级widget中只能包含唯一一个子级widget。例如:Container容器布局,Center居中布局,Padding填充布局,Align对齐布局,FittedBox缩放布...
2019-03-25 11:38:45
1172
原创 Flutter之路由及导航(页面跳转以及传递数据)
移动应用中,通过页面展示其所有元素。在flutter中,这些元素称为路由,它们是有Navigator组件管理。导航器管理一组路由Router对象,并提供了管理堆栈方法,例如Navigator.push和Navigator.pop...
2019-03-24 23:16:34
2312
原创 在组件化开发中ARouter的坑
Program type already present: com.alibaba.android.arouter.routes.ARouter$$Providers$$app
2019-03-04 13:17:22
2193
3
mysql DOS命令行
2012-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人