
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在看okhttp源码的时候,发现了责任链模式。所以今天复习一下这个不太用到的模式。使用责任之前需要明确目的是什么, 拦截谁? 拦截了干什么?责任链模式可以在被拦截者的执行前后都可以拦截一次okhttp的责任链模式是靠一根总链条串联。而传统的链表式责任链是靠拦截者们自身串联的以下是okhttp的责任链模式。这是简化后的责任链模式拦截器接口和链条类(管理类),...
修改flutter工程名和包名
今天同事遇到这个问题。后来查了一下的原因是:不允许在实例化对象的时候重写的方法。以下两种都是不允许的:1.匿名类直接new 加重写的方式。getSupportFragmentManager().beginTransaction().add(R.id.activitymap, new Fragment(){@Nullable@Overridepublic View on...
flutter不支持反射,所以本来很简单的事情,一下子变复杂了。当然官方也提供了一些工具来方便开发者。
drawPath方法在缩放的情况下,有性能问题,卡帧,掉帧,甚至crash。最近产品上有个图片编辑的需求,需要对编辑区域做放大和缩小, 以方便用户编辑图片。这期间遇到几个问题。多了同样会有性能问题,卡帧,掉帧,甚至crash。在缩放时,CustomPaint会反复刷新,尽可能避免不必要的刷新。做到在缩放时不刷新,在编辑时刷新。如果只是单纯的缩放,没有对缩放的内容进行改变和更新, 那么基本没啥问题。
val与var,val就是C# 的readonly三重引号(“”“)相当于C# 的@”“模板表达式:字符串中有${ }, 那么可以在里面写代码。没有三元运算符,可以用if(a>b) a else b替换。 很怪的用法。if语句成了可以有返回值的方法了。unit类型when表达式, 相当于switch case; 最后的else就是default. 更加灵活。in和!in , 用于表达是否在某
不可变List所谓的不可变List就是:list中没有添加删除性质的api。创建不可变List有三个方法,另外创建list的变量不能匿名,因为要指定泛型。listOf(),创建没有元素的空list。返回的是Kotlin的EmptyList类对象。和Java中的EmptyList差不多,只不过泛型是Nothing。listOf(element:T), 用于创建只有一个元素的List。代码跟下去,会发
Kotin的Flow, 就是Java的RxJava框架, 但是使用更加简洁。 结合协程的作用域,协程被取消时,Flow也会被取消,也能避免内存泄漏。
存储访问框架,简称:SAF, 就是系统文件选择器。通常用来选择文件,和Windows的文件选择框一样。其实绝大多数app,都不会使用这个东西,因为太不方便了。图片,视频,普通文件,需要用户去翻文件夹找,这样的用户体验实在太差了。所以大家都是用第三方的或者自己写一个文件选择器。之所以讲SAF,一,是因为Android11以后,使用MediaStore无法访问到非多媒体文件了,需要依赖SAF了。二,外
Android性能优化(三) 内存优化







