自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 华为仓颉语言初识:并发编程之同步机制(下)

本文介绍了华为仓颉语言中的三种线程同步机制:MultiConditionMonitor、synchronized和ThreadLocal。MultiConditionMonitor继承自ReentrantMutex,通过条件变量实现复杂线程同步,文中以生产者-消费者模型为例展示了其用法。synchronized关键字自动加解锁,简化了ReentrantMutex的使用。ThreadLocal则通过线程局部存储实现线程隔离。这三种机制分别适用于不同场景,与Java中的同步工具类似,掌握后可以有效解决多线程并发

2025-06-10 16:56:31 355

原创 华为仓颉语言初识:并发编程之同步机制(上)

线程同步机制是多线程下解决线程对共享资源竞争的主要方式,华为仓颉语言提供了三种常见的同步机制用来保证线程同步安全,分别是原子操作,互斥锁和条件变量。仓颉中的多线程并发安全同步机制十分重要,对于会 Java 的小伙伴来说简单容易上手,但是也有一些需要注意的点,比如 notify 调用前必须要获取到线程锁,用完必须释放否则会导致其他线程无法获取到锁,本篇文章就先讲这些,已经学会了的小伙伴,赶快动手试试吧!。

2025-06-06 17:51:57 1131

原创 HarmonyOS实战:腾讯IM之消息删除、撤回和重发(三)

本文介绍了如何在鸿蒙IM应用中实现消息撤回、删除和重发功能。消息撤回使用revokeMessage方法,120秒内可撤回己方消息;消息删除通过deleteMessages方法删除本地和云端记录;消息重发需先删除失败消息再重新发送,并特别处理用户被拉黑的情况(error.code=20007)。文章详细说明了各功能的实现逻辑和代码示例,帮助开发者快速构建完整的IM功能。

2025-06-04 15:37:44 245

原创 HarmonyOS实战:腾讯IM之聊天详情页面搭建(二)

《鸿蒙版腾讯IM聊天功能实现指南》摘要:本文详细讲解了如何在鸿蒙系统上实现腾讯IM的聊天功能,包括历史消息获取(支持按时间筛选)、实时消息监听和文本消息发送三大核心功能。通过List和LazyForEach控件实现对话列表左右布局,区分收发消息样式,并提供了消息状态管理和滚动定位等细节处理方案。文章包含完整代码示例,从基础功能入手,为后续扩展消息撤回、删除等功能打下基础。

2025-05-30 13:46:32 407

原创 HarmonyOS实战:腾讯IM之聊天列表搭建(一)

本文介绍了鸿蒙版腾讯IM聊天列表页面的实现过程。由于腾讯未提供鸿蒙版UI组件,作者自行开发了包含删除功能、时间排序和消息更新等核心功能的聊天列表。技术实现包括:通过SDK获取会话列表数据、使用LazyForEach展示列表并处理键值问题、实现侧滑删除功能、新增会话时进行数据过滤和排序处理。文章指出鸿蒙版IM开发面临接口不全的挑战,所有逻辑需自行实现,最终完成了类似微信的聊天列表功能,并预告下篇将介绍聊天详情页的开发。

2025-05-28 17:02:01 312

原创 华为仓颉语言初识:并发编程之线程的基本使用

本文介绍了仓颉语言中线程的基本使用:1)使用spawn关键字创建线程,支持sleep操作;2)线程名称需显式指定,默认为空字符串;3)通过Future对象可获取线程执行结果;4)调用cancel()取消线程,需配合hasPendingCancellation检查。仓颉线程设计与其他语言类似,但存在细节差异,如无默认线程名等。文章以代码示例展示了线程创建、命名、执行控制和取消等核心操作,为开发者提供了实用指南。

2025-05-27 14:34:17 373

原创 华为仓颉语言初识:结构体struct和类class的异同

华为仓颉语言中结构体(struct)与类(class)的区别:结构体使用struct关键字定义,不支持继承和抽象,实例赋值时是值传递(拷贝);类使用class关键字定义,支持单继承、多实现和抽象,实例赋值是引用传递。两者都支持构造函数、访问修饰符和成员方法,但类还支持方法重写和sealed修饰。开发者需根据值传递或引用传递的需求选择使用结构体或类。

2025-05-26 14:16:01 937

原创 HarmonyOS实战:高德地图定位功能完整流程详解

本文介绍了在鸿蒙应用开发中实现高德地图定位功能的完整流程。首先需要申请定位权限并检查GPS开关状态,若未开启则引导用户跳转系统设置。通过高德SDK配置单次定位参数并监听定位结果,获取经纬度后使用华为API逆编码转换为位置信息。若定位失败,可尝试获取历史定位缓存,最终仍失败则使用默认位置。文章详细说明了权限申请、GPS检查、定位参数配置、逆地址解析和异常处理等关键步骤,帮助开发者实现完整的定位功能方案。

2025-05-24 14:59:00 541

原创 HarmonyOS实战:Tab顶部滑动悬停功能实现

在鸿蒙开发中,实现Scroll嵌套List列表滑动时顶部悬停的效果是一个常见需求。本文详细介绍了如何通过布局和事件处理来实现这一功能。首先,使用Scroll嵌套List和Tab布局来构建基础页面。然后,通过设置nestedScroll属性为NestedScrollMode.PARENT_FIRST,确保外层Scroll优先滑动。接着,通过监听List和Scroll的滑动事件,处理滑动冲突,确保在特定条件下Scroll停止滑动,将滑动事件交给List处理。最终,实现了在上下滑动时优先让Scroll滑动的效果,

2025-05-23 11:50:11 836

原创 HarmonyOS实战: 城市选择功能的快速实现

本文详细介绍了在开发城市选择功能时,如何处理城市列表中的多音字、按字母顺序排列城市以及将首字母相同的城市分组的技术实现。首先,通过使用pinyin4js库处理多音字,确保每个城市名称的首字母正确。接着,利用Intl.Collator对城市数据进行字母排序。最后,通过遍历和条件判断,将首字母相同的城市分组,并使用ListItemGroup和sticky功能在UI中展示分组结果。文章强调了分组处理的复杂性,并鼓励读者动手实践以加深理解。

2025-05-22 16:53:28 259

原创 HarmonyOS实战:高德地图自定义定位图标展示

本文详细介绍了在鸿蒙系统中实现地图定位功能的开发流程与注意事项。首先,开发者需要申请两个必要的定位权限,并确保用户手动开启系统设置中的位置权限。接着,通过高德定位获取用户位置信息,并使用自定义图标替代默认的定位箭头。文章特别强调了经纬度数据必须为float类型,否则可能导致定位不准确。此外,还需检查系统的GPS定位按钮是否开启,以确保定位功能正常使用。通过本文的指导,开发者可以避免常见的定位问题,顺利完成地图定位功能的开发。

2025-05-22 10:30:57 427

原创 HarmonyOS基础组件:Button三种类型的使用

HarmonyOS即将停止兼容Android原生功能,开发者需转向学习HarmonyOS开发语言。本文重点介绍了HarmonyOS中Button的使用,其功能丰富且扩展性强,能有效减少代码量并简化开发流程。HarmonyOS的Button支持三种样式:普通型、胶囊型和圆形,并允许自定义圆角、背景色、文字大小和字体粗细等属性。此外,Button还支持点击效果和自定义样式,如结合图片和文字的按钮,这在Android中通常需要复杂的布局控件实现,而在HarmonyOS中则更为简便。HarmonyOS的UI绘制能力

2025-05-21 22:02:36 631

原创 HarmonyOS实战:3秒实现一个自定义轮播图

本文介绍了在HarmonyOS中快速实现自定义轮播图的方法。通过使用官方提供的Swiper控件,开发者可以轻松实现轮播图的基本功能,如循环播放、自动播放、自定义播放间隔、横向和竖向轮播以及自定义指示器。文章详细讲解了如何使用Swiper控件和LazyForEach懒加载技术来提高性能,并展示了如何自定义指示器组件。此外,还提供了实现轮播图基本属性的代码示例。本文旨在帮助开发者在鸿蒙系统中高效地实现轮播图功能,并鼓励读者动手实践。

2025-05-20 14:41:59 336

原创 HarmonyOS实战:自定义时间选择器

在鸿蒙开发中,官方提供的时间选择器无法满足特定需求,因此开发者需要自定义时间选择器。本文介绍了如何实现一个支持精确到时分、考虑闰年计算的时间选择器。技术实现上,使用鸿蒙的TextPicker控件来显示可滚动的年月日选择器,并通过Promise处理日期计算,特别是闰年的处理。同时,通过TextPicker显示时分,并确保默认选中当前时间。此外,还需注意月份从0开始的问题,需手动调整为1到12。本文详细讲解了时间选择器的实现细节,帮助开发者在鸿蒙平台上自定义时间选择器。

2025-05-19 15:59:47 417

原创 HarmonyOS实战:快速实现一个上下滚动的广告控件

本文介绍了在鸿蒙系统上实现一个支持上下滚动的广告控件的方法。首先,通过需求分析确定了广告控件需要支持的基本功能,包括上下自动滚动、手动滑动、广告删除以及自定义播放时间间隔等。接着,技术实现部分详细说明了如何使用鸿蒙官方提供的Swiper组件作为广告容器,并通过ForEach或LazyForEach遍历数据源来填充广告内容。此外,文章还介绍了如何利用@State装饰器实现数据源的动态更新,以及如何通过Swiper组件的属性设置自动播放时间和手势操作等功能。最后,文章总结了鸿蒙系统在实现此类功能上的简便性。

2025-05-16 17:52:49 402

原创 HarmonyOS实战:实现任意拖动的应用悬浮窗口

为了增加应用程序功能的丰富性和便利性,很多应用都会提供一个悬浮窗口实现多页面显示。特别是一些性能检测工具,比如 dokit。在鸿蒙上怎么实现类似的全局悬浮窗口呢?阅读完本篇文章你将学会在鸿蒙上如何实现这一功能。通过 window 不仅能实现全局悬浮窗,还可以实现自定义弹窗,Poupwindow,toast 等一系列弹窗。使用 window 的好处在于可以彻底和当前页面分离,不依赖页面存在。可以实现在任意地方弹窗。快动手试试吧!

2024-12-02 13:40:37 497

原创 HarmonyOS实战:一招搞定保存图片到相册

保存图片功能几乎是每个应用程序必备的功能之一,当用户遇到喜欢的图片时可以保存到手机相册。那么在鸿蒙中保存图片是否也需要申请用户存储权限以及如何将图片保存到相册,本文将详细讲述怎么保存网络图片,指定布局生成图片保存至相册的功能实现。对比 Android 或 iOS 来说,鸿蒙在实现功能上相对简单,比较容易上手。但是鸿蒙对于用户权限的获取要求比较严格,正式上线一般都需要使用系统提供的安全组件访问应用程序的相册或存储,日常开发中需要十分注意,以免影响项目的正常上线。

2024-11-18 17:41:12 2672

原创 HarmonyOS实战:快递信息时间轴效果实现

快递信息时间轴在购物软件中是必不可少的功能,通过时间轴可以展示快递从发货到派送的每一个环节。本篇文章通过代码的形式详细讲解在鸿蒙日常开发中如何实现时间轴的效果。(篇尾附有完整源码)本文的重点是知道虚线可以根据设置布局样式实现,然后就是如何实现虚线和布局动态高度变化同步,通过鸿蒙原生组件提供的方法可以实现。

2024-11-15 16:35:55 452 1

原创 HarmonyOS实战:组件化项目搭建

鸿蒙应用开发已经成为互联网新的风口,开发鸿蒙软件已经成为今年工作的核心目标。在软件开发过程中,对于复杂度较大,功能较多的软件都会采用组件化项目架构,那么对于鸿蒙应用开发是否也能实现组件化呢?本文将详细讲解HarmonyOs组件化项目搭建的全过程,带领大家实现一个组件化项目。HarmonyOs组件化的使用,有利于模块之间的解耦及大型项目的共同开发。随着鸿蒙生态的不断完善,学习鸿蒙开发势必成为新的趋势。也是广大同行新的选择。

2024-11-10 10:55:31 915

原创 HarmonyOS实战:一招解决等待多个并发结果

年前公司与华为签订了合作备忘录,加入了鸿蒙生态这个大家庭。。公司想赶着鸿蒙纯血系统上市之前,发布自己的鸿蒙软件。开发鸿蒙NEXT版本软件就变成了今年的一个工作重心。本文主要讲解开发过程中遇到的并发问题,官方API 11文档写的太简单了,根本没有解决方案,小编也是苦思冥想,绞尽脑汁才找到解决方案。需要开发鸿蒙的小伙伴可以仔细阅读,避免踩坑。鸿蒙NEXT的API还不算完善,需要每个开发者的参与,发现问题,提出问题,鸿蒙开发人员才能更好的解决问题。

2024-11-09 10:00:31 381

原创 HarmonyOS实战:首页多弹窗顺序弹出终极解决方案

随着应用软件功能的不断增加,应用程序软件首页成为弹窗的重灾区,不仅有升级弹窗,还有积分弹窗,签到,引导等各种弹窗。为了彻底解弹窗问题,本文将使用设计模式解决这个痛点。本方案采用责任链设计模式和建造者设计模式,通过将不同的弹窗添加到弹窗处理类,然后按显示顺序。

2024-11-08 14:40:35 308

原创 鸿蒙踩坑记之一招解决等待多个并发结果

鸿蒙NEXT的API还不算完善,需要每个开发者的参与,发现问题,提出问题,鸿蒙开发人员才能更好的解决问题。如果您也是鸿蒙开发者,有其他更好的解决方案,欢迎评论区交流 ,互相学习,互相成长!

2024-04-02 17:12:43 670

原创 深入解读OKhttp五大拦截器之RetryAndFollowUpInterceptor

Okhttp的封装了一些列请求所需要的参数,不管是同步请求还是异步请求最终都会经过五大拦截器的处理才能得到服务器返回的请求结果。本篇文章主要讲解Okhttp五大拦截器的重试重定向拦截器的作用。RetryAndFollowUpInterceptor拦截器作为OKhttp的第一个默认拦截器,主要作用是当客户端网络请求失败时或目标响应的位置发生改变时调用。

2024-03-02 15:15:02 1012

原创 Android自定义View实现两种二维码扫描效果

最近在开发新项目时,使用了扫描二维码的功能,一般扫描二维码的效果是一条横线从上到下循环移动,这次却换成了网格图片。这里通过调用postInvalidateDelayed 不停延迟绘制图片来实现扫描图的移动效果。绘制扫描线使用了canvas.drawBitmap 方法 ,通过裁剪显示位置绘制扫描图片。首先定义正方形扫描框矩形的位置,这么默认使用屏幕中心的位置。通过上面定义的扫描框矩形,绘制扫描框的边框线。除正方形扫描框之外的背景颜色。扫描框四个边角线的宽度。扫描框四个边角线的长度。扫描框四个边角线的颜色。

2024-01-17 14:49:30 807 1

原创 Flutter之解决Window上项目无法运行到GoogleChrome上

最近在做一个简单的web项目,想尝试使用Flutter来实现,毕竟一套代码多端可以使用。在开发过程中,想在谷歌浏览器上看看实现的效果。选择Chrome(web),然后运行项目。大概的意思就是端口不对,无法打开。网上给的解决办法也是五花八门,但是效果甚微。这里提供一个终极的解决办法,一劳永逸。只需要配置一行代码。如果遇到相同问题的同学,可以试试,亲测有效。

2023-09-26 11:56:19 495

原创 Android进阶之网易云插件化换肤实现方案

大概是在2016年接触换肤功能,那时候接触的换肤方案实现起来比较繁琐,性能比较低。通过发送通知动态设置资源文件,图片,文字颜色等相关属性。随着技术的不断发展,越来越多的高性能换肤方案涌现出来,今天为大家详细介绍一种高性能,低侵入性的插件化换肤方案。

2023-09-18 09:14:31 497 1

原创 谷歌官方推荐的MVI基本使用

近年来,谷歌的应用框架不断推陈出新,从MVC,MVP,MVVM,到如今官方推荐使用的MVI架构。作为开发者时刻关注着技术的更新迭代,毕竟还是要靠技术吃饭。今天抱着学习的态度,我们一起了解一下Android架构的演进史以及MVI到底有什么优势值得让谷歌官方推荐使用。篇幅较长,请耐心阅读。

2023-09-13 10:12:22 508

原创 Glide源码解析-四级缓存

Glide是一个优秀的图片加载框架,支持多种数据源,功能强大,性能高

2023-09-12 10:24:31 318 1

原创 禁止指令重排序还有什么方法能够实现

回答这个问题之前,先搞清楚什么是指令重排序,为什么要禁止指令重排序,了解出现问题的原因,才能对症下药,从根本上解决问题。

2023-08-04 16:19:30 344 7

原创 Handler消息机制之epoll机制

在pollOnce中通过pollInner最终调用到epoll_wait,至此可以得出,Java层的nativePollOnce最终调用到JNI层的epoll_wait方法,并在在分析的过程中发现,JNI里面也有Looper。其他Java层的线程最终都是通过JNI调用pThread(感兴趣的同学可以查看JNI源码),对应的JNI也有和Java类名一样的线程相关类。应用程序中的任何操作包括:用户的点击事件,触摸事件,页面跳转等等,都会作为Message进入消息队列,最后被Handler处理。

2023-08-01 11:24:33 424 2

原创 网络编程之DNS域名解析

DNS 又称域名系统 (Domain Name System) 它将域名和IP地址相互映射成一个分布式数据库。使人们更加方便的访问互联网。

2023-07-27 14:43:22 193 1

原创 RecyclerView 之自定义LayoutManager实现探探效果

RecyclerView通过添加自定义LayoutManager实现类似探探首页的效果。RecyclerView的宽度设置为屏幕宽度。即 android:layout_width="match_parent"。@Override@Override//获取item个数//记录最后一个item位置//默认展示4个item}else {//重新布局item位置i < count;

2023-07-26 10:32:20 248 1

原创 Android自定义View之头部悬浮吸顶效果

今天介绍一种比较简单的RecyclerView头部悬浮吸顶效果的实现方式,通过自定义RecyclerView的ItemDecoration分割线即可实现,不需要其他辅助类。

2023-07-24 15:23:52 767

原创 Android源码剖析之LeakCanary源码解析

LeakCanary是一个开源的内存泄漏检查工具,使用简单,主要用来监测Activity和Fragment是否发生内存泄漏。如果发生内存泄漏,直接以引用链的形式展示出造成内存泄漏对象

2023-07-19 11:23:49 245 2

原创 Android系统启动流程源码解析

当Android手机从按下开机键时,屏幕点亮,到系统桌面的显示,整个过程系统是怎么启动的?下面我们一起深入源码来看一下。

2023-07-12 16:14:11 1035 3

原创 Android-ThreadLocal并发安全与内存泄漏原理详解

看了本文你将会从学习到ThreadLocal是如何实现线程隔离的?为什么ThreadLocal会造成内存泄露? 如何解决?

2022-09-08 17:21:23 1857 2

原创 Android屏幕适配-宽高限定符,SmallestWidth,今日头条适配对比

前言屏幕适配一直作为Android开发中的痛点,对于开发者来说,适配形色各异的手机屏幕确实很头疼,今天小编就目前主流的三种屏幕适配方法进行详细讲解,希望能给大家带来更好的选择。一、屏幕适配是什么?由于安卓系统的开放性,不同的厂家都可以根据自己的需要修改Android系统,手机屏幕尺寸也各不相同,对于用户来说可以有不同的选择,但是对于软件开发者而言确实很头痛,一个软件需要同时适配不同尺寸的屏幕,确保给用户带来更好的体验。二、主流适配1.宽高限定符适配宽高限定符适配也可以叫屏幕分..

2020-11-10 11:45:33 1379 2

原创 Android源码分析之Handler消息机制

文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、Handler是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、Handler包括哪些部分1...

2020-10-10 11:34:42 120

原创 Git提交代码踩坑-真香

搞开发的同志们都知道git的强大,由于本人是Android开发,所以本文主要讲述在安卓开发中git命令行提交代码的使用。AndroidStdio非常优秀,只要在AS(AndroidStdio)中装入git插件,然后一顿神操作就能把新创建的项目上传到代码服务器中(由于太常用这里就不介绍AS中怎么使用git插件了)。在线上代码管理网站随便注册一个(公司要求码云)。然后就开始创建项目,在码云上创建仓...

2020-03-29 09:59:09 590

原创 Android面试必问的Activity的启动模式

很多时候在面试过程中或者在日常的开发过程中,大多数都会涉及到activity的启动模式.activity的启动模式一共有四种:standard(标准模式),singletop(栈顶复用模式),singletask(栈内复用模式),sinlginstance(唯一实例模式).1.standard.标准模式 activity的默认模式就是standard模式.在这个模式下,当我们启动一个ac...

2019-04-15 16:25:15 159

空空如也

空空如也

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

TA关注的人

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