自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 Glide框架分析

2019.07.24 Glide内存缓存 Glide把图片封装为Resource类,变量包括id(一般是url)、长、宽、等,当这些变量都一致则认为是同样的任务对象 内存缓存分为两种,正在使用的图片,以及lruCache中的缓存 针对正在使用的图片的情况:Glide使用图片时,会用一个弱引用指向bitmap,使用缓存时通过弱引用取得图片资源,在使用图片时计数+1,释放时计数-1,当计数为0...

2019-07-24 17:44:10 214

原创 插件化开发笔记

2019/7/19 hook多是通过反射,修改系统中内存值来实现。 360 Replugin的唯一hook点 Replugin通过把系统的的classLoder替换成自己的classLoader实现加载没在AndroidManifest预定义的activity 通过application实例,能拿到baseConxt成员变量 他的类型是contextImpl 通过contextImpl去...

2019-07-19 17:20:29 114

原创 微信Matrix框架分析

2019/7/19 看了资源监测机制 ResourceCanary ResourceCanary的功能有两个: Activity泄露监测 Bitmap冗余监测 基本原理是: Activity泄露监测: 使用若引用包着avtivity实例 当activity onDestroy时,隔多时间主动执行以下GC,若activity没被回收,则认为是泄露 记录下泄露的activity并生成hp...

2019-07-19 16:26:43 3142

原创 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 158

原创 Android官方实用类更新ViewDataBinding+DiffUtil+LiveData+ViewModel等

ViewDataBinding 可用于绑定Activity/Fragement等,类似于ButterKnife,好处在于把Activity的逻辑与布局的实现彻底分离,布局相关逻辑全部转移到XXXViewdataBindng中。 而且DataBinding比ButterKnife效率高   DiffUtil DiffUtil是support-v7:24.2.0推出的工具,用来寻找新旧两个数...

2018-09-13 16:34:25 1113

原创 POJO类、Java Bean与EJB

pojo:plain ordinary java object 就是最普通的java类,只有变量与getter setter函数 java bean:JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。 JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行...

2018-09-11 10:03:27 220

原创 关于glsl集中参数类型

uniform:表示又glsl外部传进来的,shader程序读取但不能修改,相当于常量,可以由vertex_shader或者frag_shader使用, attribute:由glsl外部传到vertex_shader中,可以读取或者修改 varying:用于vertex_shader向frag_shader传递数据之用(声明的名字需一致)。

2017-09-27 21:55:41 326

原创 Opegl随笔

Opengl Demo建立的一般流程为: 1,新建GLSurfaceView 并设为界面为它 glSurfaceView = new GLSurfaceView(this); glSurfaceView.setEGLContextClientVersion(2);//漏了写这个会没显示 glSurfaceView.setRenderer(new FreeStyleRenderer

2017-09-16 16:35:29 470

原创 关于MVP+CLEAN 框架的理解

首先,基本的概念参考下图: 我们看到 基本的模型有4层,我们一般的mvp架构是3层,可以基本理解为Model拆分了 doman 和entities两层。 Entities:数据层,包括本地数据、远程数据等 Use Case:业务逻辑层,这层包括3个部分:用例UseCase,公共模块Business Logic,和任务管理模块 Presenter:一方面相应UI的请求,一方面管理Us

2017-09-11 14:21:50 589

原创 笔记Instant

2017-07-13 StackTraceElement e= Thread.currentThread().getStackTrace()[4]; String caller = e.getFileName() +":"+ e.getLineNumber() +" "; Log.d(TAG,"invalidate: "+ caller); 获得当前调用的trace 2019-7-...

2017-07-13 14:58:14 191

原创 Android App性能优化

随着移动应用在中国6、7年的发展,手机应用的开发已经很完善了,如果boss让你开发一个应用,你会发现你要开发的功能在公司里面基本都能找到类似的实现代码,就算在公司找不到,在网上也有大把的demo,这样程序开发的门槛就降低了,无非是代码的解读与拼凑(仅在实现功能的角度来说),所以为了成为一个优秀的程序员,大家就不能仅满足于实现功能,更重要的是写出优秀的程序。在这篇文章里,我会结合过去的开发经验—特别...

2017-02-10 15:07:12 456

AndroidStudio自动打log插件

快速打log的插件 模块快捷键为:ctrl + shift + L 例如新开一行,输入xzw,按下快捷键,将自动输入: Log.d("xzw","AccessSort:appendToEnd("+sortedMethods+"):140"); 以上包括tag,类名,函数名,参数,所在行数。 同时支持快速统计时间、打印调用栈 统计时间举例: xzw_time + 快捷键 打印调用栈举例: xzw_trace + 快捷键 源码github地址:https://github.com/xiaozhenwei/AutoLog 觉得好用麻烦加个星,觉得不好用请不吝指正,感谢!

2018-12-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除