- 博客(2735)
- 资源 (6)
- 收藏
- 关注
转载 Android FD水位监控实现原理
本篇就到这里,我们本篇主要是FD ,还有一点要补充的是,这个FD的限制并不是每个系统固定的,另外,FD的数量也是系统中的数量,而不单单是单个app中的数量,因此,使用的时候一定要注意这个问题。另外,在本篇之前,我们还写过《Android HandlerThread FD 优化》一文,其中利用共享Looper机制,实现MessageQueue减少创建,进一步减少fd的数量,因为MessageQueue创建之后会创建至少2个FD,因此,通过这种手段可以有效降低FD泄露问题,目前,该方案也在推进中。
2024-03-29 10:50:29 4
转载 Kotlin技巧:Collection管理集合的常用函数
groupBy函数将一个集合分割成一个map,其中每个键代表一个独特的标准,对应的值是一个列表,列表中的元素匹配这个标准。记住,清晰和有效的排序不仅有助于数据组织,而且还增强了代码的整体可读性和维护性。使用sortBy和sortedBy,Kotlin提供了一种直观的方法来实现这一点,使你的集合保持有序和代码库清洁。尽管它们的功能相似,但根据上下文和你正在处理的集合的类型,他们的应用略有不同。在这个例子中,sortedBy采用一个选择器函数{it},它简单地返回每个元素,列表是根据字符串的自然顺序排序的。
2024-03-28 17:43:57 7
转载 优雅的处理首页弹框逻辑:责任链模式
(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。) 责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请 求,并返回相应的结果,其通用类图如图所示//请求的等级//请求级别//处理者返回的数据//抽象处理者//每个处理者都必须对请求做出处理//是自己处理的级别,自己处理} else {//不是自己处理的级别,交给下一个处理者= null) {
2024-03-28 17:42:48 4
转载 聊聊鸿蒙中 HAR 和 HSP 的使用场景
在聊 HAR 和 HSP 之前,有一个概念必须弄清楚,就是HAP。HarmonyOS 的核心理念之一是一次开发,多端部署。多 HAP 就是为此而生的。这里引用鸿蒙白皮书中的图片,一个 App Pack 中的多个 HAP 可以自由组合在不同的设备上按需分发。entry 类型的 HAP 在中的 type 类型是entry。feature 类型的 HAP 在中的 type 类型feature。
2024-03-28 15:05:45 13
转载 Room和Flow的最佳实践指南
Room是一个SQLite对象映射库,它提供了SQLite数据库的抽象层,使得在Android应用中轻松进行数据库操作。通过Room,开发者可以在编译时进行SQL查询的验证,并且能够轻松地将数据库表中的数据转换为Java或Kotlin对象。Flow是Kotlin协程提供的一种基于数据流的异步编程工具,它可以帮助我们处理异步操作、数据流转换和错误处理。在Android开发中,Flow库已经成为了处理异步任务和数据流的重要工具,可以提高代码的可读性和可维护性。
2024-03-27 17:27:26 15
转载 如何开发一个浏览器插件
前几天,看到了郭神讲述了关于自己如何让Android版本Edge浏览器支持插件的文章,深受震感。当时我在想那该如何开发一个浏览器插件呢?这是我的盲区,因此便有了这篇文章。
2024-03-27 16:48:13 3
转载 Android自定义控件之自定义组合控件
前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一)、自定义属性Android自定义控件之自定义属性(二)。今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发成本,以及维护成本。Android自定义控件之基本原理Android自定义控件之自定义属性Android自定义控件之自定义组合控件Android自定义控件之自定义ViewGroup实现标签云。
2024-03-26 20:16:02 9
转载 竟如此简单,一文看懂DecorView的一生
DecorView的主要角色是作为顶层容器,承载着应用的视图结构。当在应用中使用setContentView方法加载布局时,实际上是将这个布局作为子视图添加到DecorView中。因此,DecorView定义了应用界面的边界,所有的视图都在这个边界内进行绘制和事件分发。下面我们来说一下,DecorView与Window、Activity和ViewRootImpl之间的关系,这能够更好地帮助我们理解应用的视图层次结构。最后,总结一下,整个流程主要可以归纳为四步:在Activity的attach()
2024-03-26 20:08:51 6
转载 Kotlin 技巧: 集合使用 filter 和 filterNot、map 和 flatMap 转换集合
无论你在处理列表、集合还是任何其他集合类型,Kotlin 都提供了两个强大的函数来简化此过程:filter 和 filterNot。当原始集合中的每个元素被转换为一个项目的集合,如果你希望将这些集合平坦化为一个单一列表时,flatMap 特别有用。filter 函数允许你指定一个条件,并返回一个新集合,其中只包含满足此条件的元素。map 函数对集合中的每个元素应用给定的转换,返回一个列表,包含这些转换的结果。这里,filterNot 排除满足条件的元素,收集列表中的奇数。lambda 表达式。
2024-03-26 20:06:14 12
转载 鸿蒙实战-库的调用(ArkTS)
整体框架搭建主页面、本地库组件页面、社区库组件页面三个页面组成,主页面由Navigation作为根组件实现全局标题,由Tabs组件实现本地库和社区库页面的切换。在pages下新建components文件并在此文件夹下创建两个ArkTS文件,分别命名为inner和outer,至此整体框架搭建完毕。
2024-03-26 19:54:45 5
转载 鸿蒙应用开发101:应用程序包基础知识和组织形式
一个App 包含多个 Module(模块),Module 有2大类型,Ability 和 Library, entry, feature 是 Ability;har(静态共享包) ,shared (动态共享包)是 Library 类型(相当于Android的AAR)。总共 4种类型的Module。Ability 类型的Module编译产物是 Hap(Harmony Ability Package), Har 模块编译产物是 har(Harmony Ability Resources) 包。
2024-03-26 19:49:51 5
转载 【译】现代Android开发技能 - Perfetto入门
本文是Google『现代Android开发技能』系列视频教程的译文,考虑到视频内容不利于留存和翻阅,因此将视频的文本内容整理成文章方便查看,首次阅读建议配合视频一起使用。原视频地址:https://www.youtube.com/watch?中文视频地址:https://www.bilibili.com/video/BV1T84y1P7Wx/原视频中卡门·杰克逊说话的语速很快,所以还不能保证,每句翻译都是正确的。
2024-03-26 19:46:52 4
转载 【性能优化】使用Perfetto定位应用启动性能的瓶颈
Perfetto是Android 10 引入的系统级跟踪工具,支持Android,Linux和Chrome,用于取代Systrace。相比于Profiler和AGI,它不再局限于应用内,而是可以提供整个系统的运行状态,当我们需要查看应用有没有影响到系统的稳定性和流畅性时,或者反过来用于分析系统对应用运行的影响时,就可以使用Perfetto来进行系统级跟踪和分析。【译】现代Android开发技能 - Perfetto入门Perfetto的使用方式有很多,个人建议使用脚本。它是Perfetto。
2024-03-26 19:44:03 6
转载 一篇文章教你完全掌握jni技术
jni全称java native interface,我把它分为三部分,java代表java语言,native代表当前程序运行的本地环境,一般指windows/linux,而这些操作系统都是通过C/C++实现的,所以native通常也指C/C++语言,interface代表java跟native两者之间的通信接口,jni可以实现java和C/C++通信。它是java生态的特征,所以定义在jdk标准当中。
2024-03-26 19:24:58 25
转载 点阵体文字动效,祝福永远的女神
本篇到这里就结束了,本篇的核心内容就是利用点阵字体的思想,实现文字描绘特效,在本篇,我们还回忆了以前几篇文章,其中最重要的还是“碰撞检测”相关,另外我们也可以了解到字体设计的核心思想,以及如何让颜色变的更亮。好了,本篇就到这里,下面我们附上本篇的源码。private char[] text = "永远的女神".toCharArray();//否则提供给外部纹理绘制//记录点位,保存重合点位// 文本路径。
2024-03-26 19:04:08 4
转载 FlorisBoard:Android开源键盘的现代化选择
FlorisBoard是一款免费且开源的安卓键盘,适用于Android 7.0及以上版本的设备。它的现代化设计和用户友好的界面使其在众多键盘应用中脱颖而出。FlorisBoard的独特之处在于它注重用户体验的同时,也高度尊重用户的隐私。总之,FlorisBoard作为一款免费且开源的安卓键盘应用,通过其现代化的设计、高度的定制化能力和对用户隐私的尊重,成为了用户在安卓平台上的首选。无论是个人用户还是企业用户,FlorisBoard都为他们提供了出色的键盘体验和保护隐私的安全性。
2024-03-21 15:13:30 30
转载 HarmonyOS开发:探索组件化模式开发
组件化一直是移动端比较流行的开发方式,有着编译运行快,业务逻辑分明,任务划分清晰等优点,针对Android端的组件化,之前有比较系统的总结过相关文章,感兴趣的朋友,可以查看,点击直达;与Android端的组件化相比,HarmonyOS的组件化可以说实现起来就颇费一番周折,因为HarmonyOS经过更新迭代之后,最新的开发方式已经和之前兼容AOSP阶段有着很大的区别,基于最新的Api9,以及采用全新的ArkTs语言的开发方式,想实现组件化,就需要另谋途径。
2024-03-21 14:27:19 28
转载 productFlavors + buildTypes + signingConfigs 构建差异化 Android 应用
gradle 脚本作为 AndroidStudio 使用的打包控制语言,有其独特的优势。
2024-03-20 19:28:47 17
转载 科学的进行Android包体积优化
移动 App 特别关注投放转化率指标,而 App 包体积是影响用户新增的重要因素,而 App 的包体积又是影响投放转化率的重要因素。Google 2016 年公布的研究报告显示,包体积每上升 6MB 就会带来下载转化率降低 1%,当包体积增大到 100MB 时就会有断崖式的下跌。对于应用商店,普遍有一个流量自动下载的最大阈值,如应用宝,下载的app超过100M,用流量下载时,会弹窗提示用户是否继续下载,这对下载转化率影响是比较大的。
2024-03-20 14:02:08 21
转载 RecyclerView中只加载可见区域的数据
设置为RecyclerView的LayoutManager时,它会确保只有当item在可见区域内时,才会调用。是你的RecyclerView.Adapter,它负责处理数据的绑定。等,它们都有相应的优化机制来只创建和展示当前可见的item View。在RecyclerView中,可以通过设置RecyclerView的。如果你想自定义加载逻辑,可以通过重写LayoutManager中的。来实现只加载可见区域的数据。RecyclerView提供了默认的。方法来实现只加载可见区域数据的逻辑。
2024-03-20 11:23:31 12
转载 Recyclerview竟能如此丝滑,这14个优化策略
通过选择合适的优化布局、减少绘制、滑动优化、预加载与内存优化策略,可以有效提升RecyclerView的性能,使其在各种情况下都能保持流畅。在实际开发中,还需要根据具体情况选择合适的优化策略,并进行适当的测试和调整,以达到最佳的性能效果。Recyclerview竟能如此丝滑,这14个优化策略不容错过...
2024-03-20 10:53:19 65
转载 Android项目开发模板开源与相关介绍
其实我们优化项目架构的真实目的是为了细致化的逻辑分层,还需要顾及到多个员工协作的开发效率,还要兼顾应用产品的多变性,不是炫技,不是为了分层而分层,最终目的还是单一职责,高内聚低耦合的思想。
2024-03-19 10:42:20 14
转载 实战鸿蒙:如何实现应用悬浮窗
从一位老安卓开发的视角,经历了 Google 对 Android 这么多年的缝缝补补,而鸿蒙作为一款去年才开始真正发力的操作系统,除了给用户带来良好的使用体验以外,给开发者带来良好的开发体验也是至关重要的。希望鸿蒙可以给开发者带来更多便利的系统特性。公众号历史文章无法修改,我会把鸿蒙系列文章整理到语雀知识库参考资料[1][2]实战鸿蒙:如何实现应用悬浮窗。
2024-03-19 10:20:59 49
转载 App接入Android指纹识别
Biometric Authentication 是一种使用面部或指纹识别进行用户认证的方式,这是保护敏感信息的方法之一。它对于需要用户每次打开应用都要进行认证的金融和医疗健康应用非常重要。
2024-03-18 17:04:59 17
转载 从 XML 到 Compose 快速迁移指南
日常工作,业务需求中的界面布局是至关重要的一部分,长期以来,我们一直都是使用XML布局文件来定义自己的用户界面,但随着已经崭露头角,无疑成为了一种强大的UI工具,允许我们以更声明性和可组合的方式构建用户界面。到目前为止,Compose正在逐步取代XML,越来越多的技术团队已经开始普及使用。下面笔者将以初学者的角度出发,简单阐述如何将现有的XML布局文件转换为,实现无缝衔接,以便逐步迁移应用程序的用户界面。目前来说,国内Compose并没有完全替代XML传统布局,但将XML。
2024-03-18 16:39:20 28
转载 一个可以查看各个Android版本源代码的完整网站
不好的点就是,好像没看到哪里有搜索文件的入口,这也就意味着,你得知道需要找的文件的路径。现在可以查看Android源码的网站应该有很多,这里分享前面几天看到的一个。比较好的一个点就是,Android历史的各个版本都能看到。各个Kerenel版本也是有的。
2024-03-18 14:26:44 10
转载 RecyclerView实现列表中的Item之间设置间距的一种方式
RecyclerView 的 Item 默认没有间距是因为 RecyclerView 是一个高度自定义的控件,它的目标是提供一个高效灵活的列表展示,并且适应各种不同的布局需求。为了让开发者能够充分自定义列表项的布局和样式,RecyclerView 没有默认设置项来添加 item 之间的间距。这样设计的好处是,开发者可以灵活地根据自己的需求来处理 item 之间的间距,而不被固定的默认间距所限制。
2024-03-15 19:12:34 33
转载 货拉拉App录制回放的探索与实践
近些年货拉拉的业务持续高速发展,为了满足业务更短周期、更高质量交付的诉求,从今年开始我们的移动App的迭代交付模型也从双周演化为单周。因此,在一周一版的紧张节奏下,随之而来的对测试质量保障的挑战也日益增加,首当其冲要解决的就是如何降低移动App每周版本回归测试的人力投入。所以,在App UI自动化测试上摸爬滚打一段时间后,我们积累了大量的踩坑经验。但这些经验也让我们更加明白,如果要大规模推行App UI自动化测试,必须要提高自动化ROI,否则很难达到预期效果,成本收益得不偿失。
2024-03-15 13:56:15 22
转载 自定义ViewGroup扩展,基于事件伪造实现事件录制与回放
在之前的文章中我们复(学)习了 ViewGroup 的事件、滚动、惯性、多手指等操作。今天我们复(学)习一下事件的传递与伪造。之前在群里遇到有这样一种需求,我们需要把一段时间内的用户操作记录下来,并且可以回放操作。例如用户点击按钮或滑动,一旦出现闪退或其他问题,监控平台就可以通过用户的操作在云端或本地复现用户的操作,结合埋点与崩溃信息能更好的发现代码与逻辑漏洞并进行修复。通过录制的按钮与图标、滚动的坐标等信息再结合当前的设备进行对应的适配并回放。
2024-03-15 11:26:26 10
转载 Android 音视频&OpenGL开发干货汇总
Android FFmpeg 和 OpenGL 一直作为本号的主线文章系列更新,现在回过头来看已经更新了接近 100 篇相关的原创文章,今天对其进行一次阶段性汇总,方便读者查找相关资料和学习。有位大佬说,“这是全网最全的 Android OpenGL ES 教程”,哈哈,对于这种善意的“商业互吹”,当然是欣然接受,
2024-03-14 17:34:15 18
转载 如何移植 JsBridge 到鸿蒙
相信大多数小伙伴的项目都已经有了线上稳定运行的 JsBridge 方案,那么对于鸿蒙来说,最好的方案肯定是不需要前端同学的改动,就可以直接运行,这个兼容任务就得我们自己来做了。关于 JsBridge 的通信原理,在中已经介绍过了,现在主流的技术方案有和两种,我们分别看一下如何在鸿蒙上实现。
2024-03-14 17:30:13 68
转载 如何发布鸿蒙三方库
类似于 Android 项目中的 jar/aar ,鸿蒙肯定也是支持第三方依赖库的。鸿蒙提供了静态共享包和动态共享包两种方式。根据官网的介绍:HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。看起来 HSP 应该是个更好的选择,但是 HSP 的限制又很多。应用内 HSP 指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。
2024-03-14 17:25:52 24
转载 Kotlin 技巧:使用序列提高大数据处理性能
因此,它不仅效益低下,而且比必要的工作更多,通过在每一步都制作新的列表,使用了更多的内存。序列一次处理一个元素:它取第一个元素(1),检查它是否是奇数(是),将它平方(1),并检查结果是否大于 10(不是)。当它到达 5 时,通过奇数检查,平方得到 25,由于 25 大于 10,迭代停止。通过使用序列,当定义过滤奇数的操作或定义平方数字的映射操作时,不会有任何计算发生。使用序列,操作不会立即执行。通过使用序列的懒赋值,Kotlin 允许更有效的数据处理,尤其是在可能无需处理整个集合以得到结果的情况下。
2024-03-13 19:14:18 13
转载 Android14 WMS AMS 窗口层级结构生成过程解析
我们从 DisplayContent 的构造函数出发,看一下这棵以 DisplayContent 为根节点的 DisplayArea 树是如何生成的。
2024-03-13 11:07:58 16
转载 布局耗时监测的三种方式,你的选择将决定你的高度
布局渲染的耗时是指从布局文件加载到界面显示完成所花费的时间。通常,我们使用开发者选项中的布局边界线来查看布局渲染的性能情况,但是这种方法并不能准确地反映布局渲染的耗时。因此,我们需要一种更精确的监测方案来定位布局性能问题。通过以上实现方案,我们可以准确监测Android应用中布局渲染的耗时,及时发现并解决布局性能问题,从而提升用户体验。希望本文能帮助到Android开发者更好地优化应用性能。Android布局耗时监测的三种方式,你的选择将决定你的高度。
2024-03-13 10:20:23 21
转载 【Kotlin】类的初始化 ④ ( lateinit 延迟初始化 | ::属性名称.isInitialized 检查属性是否初始化 | lazy 惰性初始化 )
在定义属性时 , 可以使用 lateinit 关键字 设置该属性的 延迟初始化 , 在 实例对象 创建时不进行初始化 , 在使用该属性之前对其进行初始化即可;原文链接:https://blog.csdn.net/shulianghan/article/details/128723902。对于 lateinit 延迟初始化 的属性 , 在使用前可以执行。检查 , 查看该属性是否进行了初始化操作;, 如果不调用 , 则不进行初始化;, 如果忘了初始化直接调用就会报错;的 属性初始化操作 , 需要。
2024-03-12 14:48:21 23
转载 启动优化实践 - 秒开率从17%提升至75%
启动性能是App使用体验的门面,耗时过长会降低用户使用兴趣。对于开发者来说,通过各种技术手段来提升启动性能缩减启动时长,对整站业务的各项指标提升都会有较大帮助。因此,秒开率优化也成为了各个客户端团队在体验优化方向上十分重要的一环。本文将会结合我自己在项目中优化启动速度的经验,跟大家分享下,我眼里的科学的启动速度优化思路。在我的眼里,科学的优化策略是通用的,不管是针对什么性能指标不管是针对什么课题,思路是差不多的。比如这期的分享是启动优化,其实跟上期分享的。
2024-03-12 11:15:12 39
ormlite-4.48
2014-11-29
jdk-6u45-linux-x64.part2
2013-07-31
jdk-6u45-linux-x64.part1
2013-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人