移动端开发进阶
文章平均质量分 80
移动端开发进阶
Kevin写代码
专注前端技术,大家如果在博客中发现bug或有问题提出,请积极沟通,大家一起学习。
展开
-
Flutter开发进阶之错误信息
在Flutter开发中错误信息通常是由Exception和Error表示,Error表示严重且不可恢复的错误,一般会导致程序直接终止,而Exception可以被显式抛出,一般为代码逻辑错误,根据Flutter的解释说Exception为异常而Error为错误。原创 2024-04-06 21:45:39 · 684 阅读 · 0 评论 -
iOS开发进阶之列表加载图片
列表加载图片通常使用UITableView或UICollectionView,由于列表中内容数量不确定并且对于图片质量要求也不确定,所以对于图片加载的优化是很有必要的。原创 2024-03-30 11:04:07 · 512 阅读 · 0 评论 -
Flutter开发进阶之瞧瞧Future
在Flutter开发中,异步编程是处理较长时间的操作(网络请求、文件I/O、复杂计算任务等)的方式,而不会阻塞主线程的执行。在异步操作中,Future是代表异步操作最终可能完成的对象,这个对象会在将来的某个时间点完成,并带有操作的结果或异常。这篇文章将从基本概念和用法去了解Future。原创 2024-03-24 21:13:30 · 228 阅读 · 0 评论 -
移动端对大批量图片加载的优化方法(四)
本篇主要是对移动端对大批量图片加载的优化方法的总结。在React Native(RN)和H5开发中与之前的iOS、Android和Flutter的思路相同;原创 2024-01-09 16:53:57 · 451 阅读 · 0 评论 -
移动端对大批量图片加载的优化方法(三)
不能使用第三方库,或者需要更精细的控制,可以创建一个自定义的缓存策略;可以使用一个持久化的存储(如SQLite或SharedPreferences)来存储已经加载过的图片,并在需要时从缓存中检索它们;// 指定要缓存的图片URL或路径// 加载图片并将其转换为字节数组// 将字节数组写入SharedPreferences中作为二进制数据// 使用哈希值作为键来存储二进制数据注意:可以但不推荐,SharedPreferences一般存储小量数据。原创 2024-01-09 16:33:24 · 938 阅读 · 0 评论 -
移动端对大批量图片加载的优化方法(二)
在View的onDraw方法中,你可以检查图片是否已经加载,如果没有,则开始加载图片。// 重新绘制View@Override// 在View上绘制图片} else {// 可以设置一个占位符图片或空图片// 在这里实现图片的懒加载逻辑,例如使用Glide加载图片// 当图片加载完成后,调用setBitmap方法设置图片并调用invalidate方法重新绘制View。原创 2024-01-09 11:42:31 · 1001 阅读 · 0 评论 -
移动端对大批量图片加载的优化方法(一)
创建自定义的ImageVIew的子类,在layoutSubviews方法中检查图片是否可见,只有在图片即将显示时调用setImage方法。对于更复杂的用例,可以实现自己的缓存策略;考虑使用键值存储(如UserDefaults或CoreData)或第三方缓存库(Haneke或Flare)。// 配置Flare// 使用Flare加载图片并缓存print("加载图片失败: \(error.localizedDescription)")原创 2024-01-09 10:52:41 · 1585 阅读 · 0 评论 -
从GPU到屏幕渲染
GPU为图形处理单元;一般将GPU与CPU放在一起对比:CPU的强项是做逻辑运算,GPU的强项是做数学运算和图形渲染;双方都是运算处理器,从结构上来讲都包含运算单元ALU、控制单元Control和缓存单元Cache;所以结果上CPU的运算能力更加均衡,但是不适合做大量的运算;GPU更适合做大量运算;CPU基本上是实时响应,采用多级缓存来保障多个任务的响应速度;GPU往往采用的是批处理的机制,即:任务先排好队,挨个处理。原创 2023-12-27 18:04:49 · 1025 阅读 · 0 评论 -
从计算机内存结构到iOS
当前计算机都是冯.诺伊曼结构(Von Neumann architecture),是指存储器存放程序的指令以及数据,在程序运行时根据需要提供给CPU使用。原创 2023-12-26 10:07:02 · 877 阅读 · 0 评论 -
从DNS到HTTPS
超文本传输安全协议(HyperText Transfer Protocol Secure,缩写:HTTPS)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。其主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。原创 2023-12-27 18:48:53 · 1068 阅读 · 0 评论 -
Flutter开发进阶之瞧瞧RenderObject
通过上回我们了解到Flutter执行`build`Tree的逻辑线,当Tree构建完成后会交给Flutter底层的渲染事件循环去执行将内容渲染到屏幕的操作。但是渲染的操作到底是如何串起来的呢?这篇文章将会从`Element`联系到`RenderObject`去瞧瞧逻辑线形成闭环。原创 2024-03-23 19:53:10 · 931 阅读 · 0 评论 -
Flutter开发进阶之瞧瞧BuildOwner
说到关于Element Tree的构建还缺最后一块拼图,build的重要过程中会调用。负责管理构建过程,它持有当前构建周期的所有相关信息,并协调。的状态管理去进行对应的生命周期管理,同个Tree下。后会激活的循环)会重新构建Tree渲染到屏幕上。它负责协调构建过程,当Element添加进。的初始化过程中会将自身作为参数调用。我们忽略debug部分的内容,本身只存储了UI的结构数据,在。中时,Flutter循环调用的。方法会将一个需要重新构建的。的实例,它可以包含其他子。的初始化方法创建对应的。原创 2024-03-23 11:46:47 · 1311 阅读 · 0 评论 -
Flutter开发进阶之瞧瞧State
上回说到`StatefulWidget`会将自身作为参数创建`StatefulElement`,然后StatefulElement的创建过程首先要调用`_state = widget.createState()`,会创建并持有一个state通过对其生命周期的管理去对`Widget`进行刷新,创建state后还会将自身交给state持有`state._element = this;`。接下来会通过解析`State`的构成去理解`State`。原创 2024-03-21 20:06:50 · 387 阅读 · 0 评论 -
Flutter开发进阶之瞧瞧Widget
在Flutter开发中,WIdget是构建界面的基本单元;Widget是不可变的,意味着一旦创建如果需要改变UI就需要重新创建一个新的Widget;在实际开发中,Widget通常由一个个Widget组合而成,从而形成嵌套的树形结构,复杂的UI就是由这一个个Widget构建而成;Widget分为有状态和无状态,无状态Stateless根据输入参数渲染UI,有状态Stateful可以管理自己的状态并重建UI。这篇文章将通过解析Widget的构成去理解Widget。原创 2024-03-20 22:35:28 · 1255 阅读 · 1 评论 -
Flutter开发进阶之使用Socket实现主机服务(二)
在Flutter开发实践中,有一些业务是需要主从机合作搭配的服务,其中一些重要的数据和功能是交由主机进行存储和管理,从机再通过UDP和TCP与主机通讯去获得权限,一般在同一个局域网内的多端实现。原创 2024-03-19 20:35:51 · 982 阅读 · 0 评论 -
Flutter开发进阶之使用工具效率开发
软件开发团队使用Flutter开发的原因通常是因为Flutter开发性能高、效率高、兼容性好、可拓展性高,作为软件PM来说主要考虑的是范围管理、进度管理、成本管理、资源管理、质量管理、风险管理和沟通管理等,可以看到Flutter开发与项目管理完美契合。原创 2024-03-17 22:06:46 · 636 阅读 · 0 评论 -
Flutter开发进阶之Flutter Web加载速度优化
通常使用Flutter开发的web加载速度会比较慢,原因是Flutter web需要加载的资源处于国外,以下是据此所做的相应优化。原创 2024-02-28 20:23:56 · 1944 阅读 · 0 评论 -
Flutter开发进阶之Package
通常我们在Flutter开发中需要将部分功能与整体项目隔离,一般有两种方案Plugin和Package,Application是作为主体项目,Module是作为原生项目接入Flutter模块。当独立模块不需要与原生项目通讯只需要Plugin就可以,但是当需要与原生通讯就需要Package。原创 2024-02-24 23:36:58 · 781 阅读 · 0 评论 -
Flutter开发进阶之动画
自定义路径动画可以根据需要绘制任何形状的路径,并在动画中改变路径的形状、位置和颜色等属性实现相应的效果。@override// 返回true表示需要重新绘制,这里我们简单地将返回true,以便每次重新渲染时都会重新绘制路径。@override// 获取屏幕的宽高,以便根据需要调整绘制的比例。// 设置画笔颜色为红色。// 创建路径并绘制。这里我们只是简单地将一个圆形的路径绘制在屏幕上。您可以根据需要创建复杂的路径。// 在屏幕中心绘制一个圆形的路径。您可以根据需要修改路径的形状和位置。原创 2024-01-13 23:21:44 · 1128 阅读 · 0 评论 -
Flutter开发进阶之并发操作数据库
首先可以通过对数据库的操作加锁来保证,比如sqflite提供了事务(Transaction),在事务中执行数据库操作可以确保操作的原子性,即要么全部成功,要么全部失败;首先我所在的设备作为主机要监听子机的UDP广播,然后将通过我验证的子机向其发送我开放的TCP的地址和端口。假设对其响应的本身是对数据库进行操作,而主机内部也同时对数据库有了操作,这时候就要注意数据库的线程安全了;通过使用事务,我们可以实现对数据库操作的加锁,确保同一时间只有一个线程可以访问数据库中的特定资源。原创 2024-01-14 19:19:12 · 809 阅读 · 0 评论 -
移动端开发进阶之蓝牙通讯(四)
在移动端开发实践中,可能会要求在不同的设备之间切换,从而提升用户体验;或者为了提升设备的利用率,实现设备之间的连接和协同工作;不得不通过多端连接,将多个设备连接在一起,实现设备之间的数据共享、远程控制等功能,根据具体的应用场景和需求采用蓝牙的多端连接进行实现。原创 2024-01-18 23:01:44 · 1108 阅读 · 0 评论 -
Flutter开发进阶之使用Socket实现主机服务(一)
在Flutter开发实践中,有一些业务是需要主从机合作搭配的服务,其中一些重要的数据和功能是交由主机进行存储和管理,从机再通过UDP和TCP与主机通讯去获得权限,一般在同一个局域网内的多端实现。原创 2024-01-17 00:13:25 · 1189 阅读 · 0 评论 -
移动端开发进阶之蓝牙通讯(三)
移动端蓝牙通讯的主要特点是无线、便捷和高效;它能够摆脱传统有线连接的束缚,让用户更加自由地使用设备;同时,蓝牙通讯协议经过多年的发展和完善,已经具备了较高的传输速度和稳定性,可以满足多种应用场景的需求;在实际应用中,移动端蓝牙通讯可以应用于多种场景,如音频传输、数据传输、设备控制等。以物联网(IoT)为例,通过蓝牙技术,物联网设备可以实现快速、稳定、可靠的无线连接,从而进行数据传输、设备控制等操作。以下就以Flutter开发实战蓝牙通讯过程。原创 2024-01-16 19:26:21 · 1418 阅读 · 0 评论 -
移动端开发进阶之蓝牙通讯(二)
蓝牙广播是一种无线通讯技术,通过无线电波传输数据;在蓝牙低功耗(BLE)协议中,广播通信是其重要组成部分,主要有两类使用场景:单一方向的、无连接的数据通信,数据发送者在广播信道上广播数据,数据接收者扫描、接收数据;连接的建立;此外,每个设备在使用时,同一时刻,只会在一个信道进行工作,不会占用其他信道,这样可以有效地避免干扰,即使一个信道存在干扰,另外的信道也可以很好地工作;原创 2024-01-15 22:29:59 · 991 阅读 · 0 评论 -
移动端开发进阶之蓝牙通讯(一)
移动端进阶之蓝牙通讯需要综合考虑蓝牙版本选择、协议栈使用、服务匹配、设备连接、安全性和硬件支持等方面。原创 2024-01-15 12:18:01 · 1076 阅读 · 0 评论