- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 Glide框架分析
2019.07.24Glide内存缓存Glide把图片封装为Resource类,变量包括id(一般是url)、长、宽、等,当这些变量都一致则认为是同样的任务对象 内存缓存分为两种,正在使用的图片,以及lruCache中的缓存 针对正在使用的图片的情况:Glide使用图片时,会用一个弱引用指向bitmap,使用缓存时通过弱引用取得图片资源,在使用图片时计数+1,释放时计数-1,当计数为0...
2019-07-24 17:44:10 236
原创 插件化开发笔记
2019/7/19hook多是通过反射,修改系统中内存值来实现。360 Replugin的唯一hook点Replugin通过把系统的的classLoder替换成自己的classLoader实现加载没在AndroidManifest预定义的activity 通过application实例,能拿到baseConxt成员变量 他的类型是contextImpl 通过contextImpl去...
2019-07-19 17:20:29 142
原创 微信Matrix框架分析
2019/7/19 看了资源监测机制 ResourceCanaryResourceCanary的功能有两个:Activity泄露监测 Bitmap冗余监测基本原理是:Activity泄露监测:使用若引用包着avtivity实例 当activity onDestroy时,隔多时间主动执行以下GC,若activity没被回收,则认为是泄露 记录下泄露的activity并生成hp...
2019-07-19 16:26:43 3175
原创 RxJava note
1,Concat与flatMap的异同Concat与flatMap都能一次执行多个Observable但使用Concat,各个Observable必须是针对同样的实体而flatMap则能转换不同的实体2,Observable与consumer的异同Consumer 即消费者,用于接收单个值,BiConsumer用于接收两个值而Observer则无限制3,RxJava2.x的操作符...
2018-12-27 09:24:00 184
原创 Android官方实用类更新ViewDataBinding+DiffUtil+LiveData+ViewModel等
ViewDataBinding可用于绑定Activity/Fragement等,类似于ButterKnife,好处在于把Activity的逻辑与布局的实现彻底分离,布局相关逻辑全部转移到XXXViewdataBindng中。而且DataBinding比ButterKnife效率高 DiffUtilDiffUtil是support-v7:24.2.0推出的工具,用来寻找新旧两个数...
2018-09-13 16:34:25 1154
原创 POJO类、Java Bean与EJB
pojo:plain ordinary java object 就是最普通的java类,只有变量与getter setter函数java bean:JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行...
2018-09-11 10:03:27 241
原创 关于glsl集中参数类型
uniform:表示又glsl外部传进来的,shader程序读取但不能修改,相当于常量,可以由vertex_shader或者frag_shader使用,attribute:由glsl外部传到vertex_shader中,可以读取或者修改varying:用于vertex_shader向frag_shader传递数据之用(声明的名字需一致)。
2017-09-27 21:55:41 350
原创 Opegl随笔
Opengl Demo建立的一般流程为:1,新建GLSurfaceView 并设为界面为它 glSurfaceView = new GLSurfaceView(this); glSurfaceView.setEGLContextClientVersion(2);//漏了写这个会没显示 glSurfaceView.setRenderer(new FreeStyleRenderer
2017-09-16 16:35:29 492
原创 关于MVP+CLEAN 框架的理解
首先,基本的概念参考下图:我们看到 基本的模型有4层,我们一般的mvp架构是3层,可以基本理解为Model拆分了 doman 和entities两层。Entities:数据层,包括本地数据、远程数据等Use Case:业务逻辑层,这层包括3个部分:用例UseCase,公共模块Business Logic,和任务管理模块Presenter:一方面相应UI的请求,一方面管理Us
2017-09-11 14:21:50 616
原创 笔记Instant
2017-07-13StackTraceElement e= Thread.currentThread().getStackTrace()[4];String caller = e.getFileName() +":"+ e.getLineNumber() +" ";Log.d(TAG,"invalidate: "+ caller);获得当前调用的trace2019-7-...
2017-07-13 14:58:14 203
原创 Android App性能优化
随着移动应用在中国6、7年的发展,手机应用的开发已经很完善了,如果boss让你开发一个应用,你会发现你要开发的功能在公司里面基本都能找到类似的实现代码,就算在公司找不到,在网上也有大把的demo,这样程序开发的门槛就降低了,无非是代码的解读与拼凑(仅在实现功能的角度来说),所以为了成为一个优秀的程序员,大家就不能仅满足于实现功能,更重要的是写出优秀的程序。在这篇文章里,我会结合过去的开发经验—特别...
2017-02-10 15:07:12 493
AndroidStudio自动打log插件
2018-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人