
Android
文章平均质量分 73
是嗨森啦
通信工程专业,从事软件开发多年,小厂大厂都呆过,做过嵌入式(IoT类)。现主要从事移动端开发,主要使用C/C++、Kotlin、Java、前端JS,擅长原生、NDK、跨平台等。对机器学习、计算机视觉AI也感兴趣,合作、工作介绍、问题解答,私信~
展开
-
Android~集成opencv问题
安卓集成opencv开发问题收集汇总原创 2024-02-05 16:01:54 · 758 阅读 · 0 评论 -
Kotlin~Bridge桥接模式
抽象和现实之间搭建桥梁,分离实现和抽象。原创 2023-08-17 08:58:36 · 1793 阅读 · 0 评论 -
Kotlin~Mediator中介者模式
创建一个中介来降低对象之间的耦合度,关系”多对多“变为“一对多”。原创 2023-08-06 15:24:04 · 743 阅读 · 0 评论 -
Kotlin~Visitor访问者模式
将数据结构和操作分离,使操作集合可以独立于数据结构变化。原创 2023-08-04 21:55:06 · 927 阅读 · 0 评论 -
Kotlin~Facade外观模式
又称门面模式,为复杂系统提供简单交互接口。原创 2023-07-30 15:22:47 · 837 阅读 · 0 评论 -
Kotlin~Memento备忘录模式
备忘录模式是一种行为型设计模式,用于捕获和存储对象的内部状态,并在需要时将对象恢复到之前的状态。备忘录模式允许在不暴露对象内部实现细节的情况下,对对象进行状态的保存和恢复。原创 2023-07-30 09:50:12 · 830 阅读 · 0 评论 -
Kotlin~Observer观察者模式
定义一对多的依赖关系,让多个观察者同时监听一个主题对象。原创 2023-07-23 17:49:06 · 1399 阅读 · 0 评论 -
Kotlin~Proxy代理模式
又称委托模式,充当中介代理的类。特点:让一个对象控制另一个对象的访问,让代理充当其他事物的接口。原创 2023-07-20 23:42:47 · 694 阅读 · 0 评论 -
Kotlin~Decorator装饰器模式
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。可以运行时动态添加新的功能,而无需改变原来的代码。原创 2023-07-09 11:54:14 · 1022 阅读 · 0 评论 -
Kotlin~Composite组合模式
能够帮助实现树状结构的模式。主要特点:递归组合、树状结构、统一处理所有对象原创 2023-07-08 16:19:38 · 922 阅读 · 0 评论 -
Kotlin~Command模式
命令模式的结果就是接收方的执行结果,但为了以命令的形式设计,引入额外类型增加理解上的困难。不过这也是设计模式的通病,抽象必然会增加额外的类,代码抽离肯定会比聚合更加难理解。原创 2023-07-08 14:44:50 · 908 阅读 · 0 评论 -
Kotlin~责任链模式
允许多个对象按顺序处理请求或任务。角色介绍Handler: 处理器接口,提供设置后继者ConcreteHandler:具体处理器,处理请求原创 2023-07-07 08:58:42 · 1238 阅读 · 2 评论 -
Kotlin~Template模版方法模式
定义算法骨架、代码模版。原创 2023-07-02 21:24:49 · 757 阅读 · 0 评论 -
Kotlin~迭代器模式
提供一种遍历集合元素的方法,而不暴露集合内部的实现。原创 2023-06-24 15:49:48 · 950 阅读 · 0 评论 -
Kotlin~状态State模式
允许一个对象内部状态改变时改变它的行为。原创 2023-06-17 21:46:30 · 317 阅读 · 0 评论 -
Kotlin~FlyWeight享元设计模式
目标是最小化内存的使用,节省内存原创 2023-06-10 17:20:32 · 172 阅读 · 0 评论 -
Expected stack map table for method with non-linear control flow
不影响实际代码 R8只是对于字节码变更的一个校验。原创 2023-05-30 14:23:39 · 5412 阅读 · 4 评论 -
Kotlin~Interpret解释器模式
Abstract Expression:抽象表达式Terminal Expression:终结符表达式Non-Terminal Expression:非终结符表达式Context:上下文适用某个特定类型问题发生频率足够高的场景,对于复杂文法解释器模式不是一个很好的选择。原创 2023-05-24 22:36:42 · 225 阅读 · 0 评论 -
Kotlin~Adapter适配器模式
Adapter(Wrapper) Pattern,连接两个不兼容的接口,让接口不兼容的对象能够相互合作。原创 2023-03-26 16:47:07 · 1268 阅读 · 3 评论 -
Kotlin~Singleton单例模式
保证一个类只有一个实例,并为该实例提供一个全局唯一的访问节点。原创 2023-03-23 22:24:11 · 740 阅读 · 1 评论 -
Kotlin~ProtoType原型设计模式
用原型实列指定创建对象的种类,通过拷贝这些实例创建对象。调用者无需关系内部细节,不调用构造函数。kt中怎么实现原型模式,就需要借助浅拷贝和深拷贝原创 2023-02-14 22:58:20 · 364 阅读 · 0 评论 -
Kotlin~工厂方法、抽象工厂模式
工厂方法对比简单工厂,增加了一层工厂抽象,实现专门的工厂生产专门的汽车;抽象工厂相比工厂方法,一个工厂可以生产不同类型的产品。简单工厂模式和工厂方法模式都是创建一类产品的模式,而抽象工厂模式是创建多个产品的模式,但是模式和工厂方法模式相同,只不过抽象工厂需要去写多个产品方法。原创 2023-02-05 21:31:04 · 493 阅读 · 0 评论 -
Kotlin~生成器模式
逐步构造复杂对象,该对象的属性更多的扩展属性,如Glide的使用。原创 2023-01-31 21:39:18 · 367 阅读 · 0 评论 -
Kotlin~软件开发7大原则
降低对象之间的耦合;增加程序的可复用、可扩展性和可维护性原创 2023-01-15 21:39:48 · 421 阅读 · 0 评论 -
Kotlin~策略模式+简单工厂模式消除if else
静态工厂方法(简单工厂模式)严格来说不能属于设计模式,策略模式不能消除if else,但可以结合静态工厂方法结合去除代码中的if else。原创 2023-01-15 17:00:58 · 1182 阅读 · 0 评论 -
Kotlin~函数式编程两把刷子:高阶函数和lambda表达式
介绍什么是高阶函数?以函数作为参数或返回函数的函数被称为高阶函数。lambda表达式在Kotlin中,函数作为一等公民存在,函数可以像值一样被传递。lambda就是将一小段代码封装成匿名函数,以参数值的方式传递到函数中,供函数使用。又分为普通lambda和带接受者的lambda表达式https://www.jianshu.com/p/791758395264lambda应用场景1.和集合一起使用,可以对集合进行映射、筛选等操作val languages = listOf("Java","原创 2021-09-21 23:33:55 · 252 阅读 · 0 评论 -
Android~Compose初探
Compose 和之前的 View 比较ViewCompose命令式编程声明式编程树形结构的遍历查找设置组件内部进行变更基于View和ViewGroup衍生基于更为底层的Canvas绘制面向对象的继承组合与函数化xml相对静态动态组合支持预览支持丰富的预览,包括点击触摸学习资料官方出品,全面详尽有详尽的代码,方便手动编译和改动本文Git原创 2021-10-10 15:48:40 · 1461 阅读 · 0 评论 -
Kotlin~作用域函数let、run、apply、with
本文比较总结Kotlin标准库中提供的作用域函数。kt中它们的使用有的时候,我们去看别人的代码感觉一团糟,所以想理清一下。就比如我们去吃西餐,我们是用刀子和叉子,想必作为一名开发者一定要用对!原创 2022-08-20 17:48:46 · 1447 阅读 · 0 评论 -
Android~Compose之自定义View
- 玩转 Compose 的自定义View - 实现一个手动划线的 DrawView - 实现一个进度条的 LevelView原创 2022-11-15 22:23:56 · 1105 阅读 · 0 评论 -
Kotlin~自定义DSL
本文记录如何自定义DSL,帮助你如何从无脑的硬编码走出来。希望对提高团队代码质量有所帮助。1. 实现首先定义bean类,再给bean类添加相应的lambda函数。然后添加单例,我们使用单例来作为所有bean的容器,并实现你需求的方法。// DslRule.ktclass Button(){}class Text(){}class Layout{ fun button(action: Button.() -> Unit){ } fun text(act原创 2021-09-16 22:23:37 · 792 阅读 · 1 评论 -
Android编译优化~Gradle构建基准测试
之前对安卓打包编译优化有所实践,但当时对优化提升结果采取了手动测试的办法才拿到结果,而且遇到大型工程更是痛不欲生。不过当时采取的策略是将增量测试代码提到了Git,编译一次抄一次代码,样本数据只重复了10次,中间不能出现错误操作不然样本数据参考意义不大。当时不清楚有更好的测试方案,但后续随着了解的深入,谷歌官方有介绍如何对Gradle构建过程进行基准测试。原创 2022-12-11 11:41:16 · 958 阅读 · 0 评论 -
Android~Compose相关概念总结
- 相比于命令式,减少findViewById函数遍历树,改变widget内部状态,性能优于。可以介绍一下UI到底层再到屏幕上的渲染过程。- 减少手动操作视图出错的可能性,降低软件维护难度。- 可以简化构建和更新UI关联的工程任务,比如databinding xml和代码耦合。- 提出重组、组合优于继承的概念。比如安卓自定义View,1万多行代码。原创 2022-11-28 22:26:23 · 1195 阅读 · 0 评论 -
Android~Compose脚手架和Toast
- 熟悉Compose中脚手架使用 - 自定义Toast样式原创 2022-11-27 15:57:33 · 2478 阅读 · 0 评论 -
Android~RxJava实现newSingleThreadExecutor()同等效果
Rxjava使用起来还是蛮方便的,不用担心调用Observable create、subscribeOn后会创建新的线程,它会复用同一线程的。也不用像java自带的线程池那样去复用提交任务,大大简化编码方式。RxJava浅析试手 RxJava 2.x 及对线程的初步理解RxJava第三篇,调度器Scheduler。原创 2022-10-30 15:56:25 · 882 阅读 · 0 评论 -
Android~MVC、MVP、MVVM和MVI对比
本文梳理记录MVC、MVP、MVVM、MVI概念和演进,以及自己的理解。面试时经常被问到,MVC MVP MVVM他们到底是什么?如何搭建一个页面?原创 2022-09-24 15:21:53 · 1908 阅读 · 2 评论 -
Android~快捷方式兼容适配
安卓适配坑很多,会感觉越测越没底,但我们还是要尝试一下,解决问题的思路比较重要。给用户比较好的体验(产品角度,用户点击有回应)各厂商Launcher获取快捷方式以及相关权限适配对快捷方式的理解安卓碎片化真的很严重,严重到你都不相信自己写的代码逻辑,作为一个移动开发者我们能做的就是协调好用户和厂商。......原创 2022-08-15 00:02:39 · 1635 阅读 · 0 评论 -
Android~老项目项目升级Gradle&AGP 7.0踩坑
结合最近对公司项目做了一下升级,踩了点坑。记录一下,方便后续有人参考。原创 2022-06-15 22:45:24 · 5647 阅读 · 0 评论 -
Android开发项目问题收集
w: 警告: 来自注释处理程序 ‘org.jetbrains.kotlin.kapt3.base.ProcessorWrapper’ 的受支持 source 版本 ‘RELEASE_7’ 低于 -source ‘1.8’原创 2021-11-30 14:49:57 · 5543 阅读 · 1 评论 -
新版Android Studio R.java丢失
源由最近在搭建组件化工程,想要去看下组件的资源id结果找半天没找到。以前都是存放在\app\build\generated\source\r\debug\目录下面的。为啥找不到了?首先找了一下项目,有看到R.txt文件位于\app\build\intermediates\runtime_symbol_list\debug目录下,难道谷歌打包取消了R.java这种编译打包方式?于是抱着好奇的心理百度查了一下,原来是AndroidGradle插件为了提高编译速度不直接生成R.java文件了,改为生成R类字节原创 2021-08-17 08:41:23 · 1111 阅读 · 2 评论 -
Android~sonarqube代码扫描分析AAPT2出错解决办法
E:\workspace\xxx\build\intermediates\packaged_res\debug\values\values.xml:1333:4: Multiple substitutions specified in non-positional format of string resource string/recipe_detail_cookstep. Did you mean to add the formatted="false" attribute?E:\workspace原创 2021-07-26 10:24:38 · 2305 阅读 · 0 评论