android
文章平均质量分 82
czZ__czZ
快速走路的程序猿
展开
-
Gradle 知识汇总
gradle基本属性分析Gradle基础介绍Gradle自定义插件开发自定义gradle插件实现一键使用360加固插件是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。Gradle就是一个Java程序,Gradle的插件可以在这个Java程序执行过程中执行额外的代码一、作为独立项目,发布到仓库新建java library:创建plugin插件类,在引入...原创 2021-03-08 17:35:53 · 193 阅读 · 0 评论 -
Handler总结
Handler源码分析(超详细的)Handler完全解读——Handler的使用Android进阶——深入浅出Handler(一)Android开发——避免内存泄露简介在android开发中,经常会在子线程中进行一些操作,当操作完毕后会通过handler发送一些数据给主线程,通知主 线程做相应的操作。 探索其背后的原理:子线程 handler 主线程 其实构成了线程模型中的经典问题 生产者-消费者 模型。 生产者-消费者模型:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存原创 2021-02-08 15:59:36 · 245 阅读 · 0 评论 -
JVM基础知识(二)
目录虚拟机中的对象对象的分配1)检查加载2)分配内存指针碰撞3)内存空间初始化4)设置5)对象初始化对象的内存布局对象的访问定位句柄直接指针判断对象的存活引用计数法可达性分析Finalize方法各种引用强引用软引用 SoftReference弱引用 WeakReference虚引用 PhantomReference学习垃圾回收的意义对象的分配策略栈上分配没有逃逸对象优先在Eden区分配大对象直接进入老原创 2021-02-02 15:18:32 · 278 阅读 · 0 评论 -
mvc、mvp、mvvm讨论
MVC2011年使用ecllipse我们的工程。有layout,在ecllipse上默认就是view层,actiity默认控制层c层,但是并没有明确的文档表示mvc是一个很明确的分工方式,但是这是一个很不好的情况,activity会变得非常冗余。稍有不慎,activity会把model层,view层的活给干了,几千行代码小菜一碟。这里最大的问题就是activity是高耦合,太臃肿所以这种设计模式并不是我们推荐的MVPactivity只有view,其他操作交给p层。相当于把act...原创 2021-02-01 16:13:18 · 111 阅读 · 0 评论 -
【Jetpack】WorkManager
WorkManager有什么用: 一:确保重要的后台任务,一定会被执行,后台任务(例如:非及时性的 (请求服 务器 及时性) 上传,下载,同步数据 等) 二:内部对电量进行了优化,不需要我们去处理电量优化了 三:API 14 到 最新版本,都可以使用WorkManager来管你你的后台任务 四:注意:WorkManager不能做保活操作 五:调度,管理,执行的后台任务的场景,通常是是可延迟的后台任务WorkManager概述你的任务不可能总是在前台,但是还要确保你的那原创 2021-01-28 14:54:17 · 484 阅读 · 2 评论 -
【Jetpack】 Paging
Jetpack 之 Paging转载自享学课堂derry使用Paging的好处是什么: 好处一:分页库可以更轻松地在应用程序中的RecyclerView逐步和优雅地加载数据 好处二:数据请求消耗的网络带宽更少,系统资源更少 好处三:即使在数据更新和刷新期间,应用程序仍会继续快速响应用户输入 好处四:不过多浪费,显示多少就用多少,做一个素质高的少年Paging的使用:角色一:DataSource(是数据源,包含了多种形式,例如:Room来源,PositionalDataSource来源原创 2021-01-25 15:10:02 · 243 阅读 · 0 评论 -
dagger2
在了解学些hilt之前,先了解一下dagger2的知识Dagger2详解——最直白易懂、详细的dagger2注入流程原理kotlin版本 hilt使用解析hilt是对draager封装的改进版本,更容易进行注入,更少写代码封装一个简易的hilt网络请求框架,这个框架可以随时切换使用的框架,框架就是用了hilt进行注入使用okhttp注解解析器public class OkHttpProcessor implements IHttpProcessor{ private O.原创 2021-01-20 10:13:35 · 112 阅读 · 0 评论 -
【Jetpack DataBinding】
【JetPack DataBinding】具体使用方法可以查看这个文档然后直接开始源码的分析一、分析生成的布局文件如何适配的我们知道使用框架的时候添加了data的标签,在其中添加了参数,但是实际上布局是不会识别的,有什么作用呢,我们在生成的build文件里找到了如下两个文件可以发现第一个文件已经去除了data标签,同时底部的xml被打上了tag,和第二个文件的xml的tag一一对应,两个文件形成匹配,在apt形成的代码里实际上就是使用第一个布局来进行试图填充档需要增加属性的时候,会使原创 2021-01-20 10:12:32 · 241 阅读 · 1 评论 -
【Jetpack】LiveData+ViewModel
【Jetpack】ViewModelLiveData是一种具有生命周期感知能力的可观察数据持有类LiveData可以保证屏幕上的显示内容和数据一直保持同步特点:1.LiveData了解UI界面的状态,如果activity不在屏幕上显示,livedata不会触发没必要的界面更新,如果activity已经被销毁,会自动清空与observer的连接,意外的调用就不会发生2.LiveData是一个LifecycleOwner,他可以直接感知activity或fragment的生命周期一、基本的使用原创 2021-01-18 15:56:40 · 273 阅读 · 0 评论 -
retrofit如何配合Rxjava封装代码
如何使用Retrofit+RxJava框架的简单封装使用掌握之前需要了解以下知识相关知识retrofit源码解析OkHttp原理解析RXJava源码详解上述文章只是讲了一下基本的原理,那么在实际应用里的如何和RXJAVA配合使用呢一、怎么搭配Rxjava使用我们知道,在使用retrofit的时候可以配置网络请求、日志、线程的适配器,其中有一个方法addCallAdapterFactory,这个方法就是为我们添加rxjava线程调度的适配器。 //创建Retrofit对象原创 2020-12-29 11:42:59 · 430 阅读 · 0 评论 -
retrofit源码解析
准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。原因:网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求 参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作。在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,Retrofit根据用 户的需求对结果进行解析。一、.原创 2020-12-28 18:30:31 · 266 阅读 · 0 评论 -
IO框架
转载自享学课堂lance学习笔记IO框架数据流是一组有序,有起点和终点的字节的数据序列。包括输入流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。流和输出流。Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、.原创 2020-12-24 15:21:31 · 90 阅读 · 0 评论 -
OkHttp原理解析
七夕节刚过去。周周同学(我也不知道为什么第一个想到的就是周周同学)在读书的时候就是单身狗一条,看到自习室每天都很多美女后,每天晚上跑去自习都干同一件事情。周周每天晚上都坐到自习室最后一排,找张纸条写上:“Hi,可以做我的女朋友吗?我的特长就是特别的长,如果不愿意请向前传”。纸条就一个接一个的传上去了,最后传给了扫地阿姨。最后和扫地阿姨过上了幸福的生活,这真是一个....令人高兴的故事。原创 2020-12-23 17:24:27 · 837 阅读 · 0 评论 -
并发编程、锁、线程池、阻塞队列
Java并发基础知识补全启动启动线程的方式只有:1、X extends Thread;,然后X.start2、X implements Runnable;然后交给Thread运行线程的状态Java中线程的状态分为6种:1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的s.原创 2020-12-23 15:52:16 · 337 阅读 · 0 评论 -
RXJava源码详解
rxjavaRx介绍ReactiveX的历史ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava原创 2020-12-18 17:04:08 · 593 阅读 · 0 评论 -
Collection对比总结
Collection:List:ArrayList:线性表,底层是数组实现继承:AbstractList实现了Seriazable,所以可用于json的序列化操作Iterator:进行轮训的时候尽量使用轮询的方法,,内部优化了非空判断,以及异常处理,for循环遍历有风险,可读,不要用于其他方面优点:尾插效率高,支持随机访问扩容:在add方法里面了,首先会判断容量大小,如果传入的是个空数组则最小容量取默认容量与minCapacity之间的最大值, ensureExpl...原创 2020-12-11 15:32:12 · 220 阅读 · 0 评论 -
手撸自定义仿Arouter跳转路由一
butterknife以及Arouter所使用的技术的都有自定义注解+反射+apt技术,本文就是大概了解一下黄油刀的技术原理就,然后手撸arouter的初步架构一、butterknife view绑定实现的大致逻辑与思路1、首先要晓得在框架里,是存在一个自定义的注解处理器,下面这个是注解处理器的部分代码通过反射获取了相应的注解@Override public boolean process(Set<? extends TypeElement> elements, RoundEn原创 2020-11-20 15:40:18 · 663 阅读 · 0 评论 -
线程基础、线程之间的共享和协作
转载自享学mark,手工笔记1、线程基础、线程之间的共享和协作基础概念 什么是进程和线程 进程是程序运行资源分配的最小单位 进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘 IO 等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的、.原创 2020-11-19 15:35:36 · 161 阅读 · 0 评论 -
反射+注解+retrofit+okhttp3总结
一键归纳okhttp3+retrofit2架构,反射+注解+retrofit手写框架下面两篇文章是我觉得理解比较透彻和详细的文章一、首先你需要了解什么是动态代理Retrofit源码学习之动态代理二、其次你要了解一下retrofit2的基本使用以及源码解析Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责网络请求接口的封装。从架构角度看Retrofit的作用、原理和启示三、简单原创 2020-11-17 14:50:08 · 373 阅读 · 0 评论 -
APT及JavaPoet基本使用
本文来自享学derry老师的课堂分享APT初窥APT是什么?APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码,如果想要自定义的注解处理器能够正常运行,必须要通过APT工具来进行处理。也可以这样理解,只有通过声明APT工具后,程序在编译期间自定义注解解释器才能执行。通俗理解:根据规则,帮我们生成代码、生成类文件APT中用到的重要元素PackageEl原创 2020-11-16 10:51:55 · 585 阅读 · 0 评论 -
组件化以及apt
1.什么是组件化,为什么需要组件化组件化意义逻辑图:组件化后,所有的module都平起平坐,有人说app的module在组件化中是个壳子,这也是为什么成为app壳工程的原因2.集成环境/组件环境自动部署配置Gradle中的Groovy其实属于糖果语法,就是弱类型语法,我们来测试下 2.3:我们在项目的开发过程中,一定要去优化我们的gradle文件,例如:把公用的内容抽取 2.4:项目的开发过程中,关于一切与“正式环境”,“测试环境” 相关的应该用Gradle进...原创 2020-11-16 10:57:29 · 135 阅读 · 0 评论 -
java泛型
Java语言高级特性前言java知识是作为Android开发的语言基础,虽然现在我们已经推出了kotlin,但是基于以下原因我们还是需要好好牢牢掌握java:1)SDK还是改成java,kotlin也需要编译成为java运行;2)目前大量的第三方库和继承与前任的代码都是java所写的;3)Java语言应用不仅仅在Android,就是在后台开发中也是一个最流行的语言;4)大公司面试都要求我们有扎实的Java语言基础。所以,请大家不要轻视提高自己Java基础的机会,请大家认真学习,做好笔记,原创 2020-11-11 10:28:51 · 124 阅读 · 1 评论 -
思维导图总结
日前再知乎看到一篇很好的文章,借鉴一下准备按照这个进行知识点的梳理https://www.zhihu.com/question/363206673/answer/952312900原创 2020-03-10 18:06:22 · 175 阅读 · 0 评论 -
【Interview】Android源码相关分析
1、Android动画框架实现原理View Animation:视图Drawable Animation:补间Property Animation:属性https://www.cnblogs.com/ldq2016/p/5407061.html2、Android各个版本API的区别https://blog.csdn.net/smxueer/article/details/5226256...原创 2019-06-13 15:00:22 · 171 阅读 · 0 评论 -
【Interview】Android基础知识点
1、Activity与Fragment之间生命周期比较https://blog.csdn.net/qq_36713816/article/details/805689022、Activity各种情况下的生命周期https://www.jianshu.com/p/e46d449467d5Activity上有Dialog的时候按Home键时的生命周期—>正常走3、四种启动模式对比ht...转载 2019-05-29 09:41:00 · 165 阅读 · 0 评论 -
【Interview】线程、多线程和线程池
1、开启线程的三种方式https://www.cnblogs.com/xiaostudy/p/9800601.html2、线程run()和start()方法区别https://blog.csdn.net/QQ2899349953/article/details/817721043、控制某个方法允许并发访问线程的个数SemaphoreTestMainhttps://www.jianshu...原创 2019-05-09 16:40:15 · 134 阅读 · 0 评论 -
Android关于第三方h5在webview调用摄像头及相机的处理
参考资料:深坑之Webview,解决H5调用android相机拍照和录像除了没有适配6.0以上的动态申请以及拦截h5的方法不同,其余均参考以上文章因为app和银行合作,在banner页投放了银行调用摄像进行人脸识别的功能,发现点击拉起摄像的功能无效,但是在内置浏览器却可以,由此怀疑需要对webview进行相关适配处理。后来查阅多方文档,发现上述文档比较详尽,同时总结下我自己的理解:在h5...原创 2019-04-30 14:40:28 · 11356 阅读 · 4 评论 -
【Interview】汇总
1、面向对象问题封装、继承、多态面向对象的目的,代码的可重复性、可扩展性、可靠性。理解java的三大特性之多态2、UI相关测量,布局,绘制View Measure -----onMeasureView Layout------onLayoutView draw------onDrawmeasure总结1.View的measure方法是final类型的,子类不可以重写,子类可以通...原创 2019-04-24 10:01:53 · 183 阅读 · 0 评论 -
【Interview】Android java基础+数据结构
1、java中==和equals和hashCode的区别“==”、equals和hashCode有什么区别2、int、char、long各占多少字节数4、2、83、int与integer的区别int和Integer的区别4、对java多态的理解Java中多态的理解多态可以说是建立在继承的基础上的,在多态的向上转型的情况中,无法调用子类中重载的方法,但是可以调用重写的方法。真正概念...原创 2019-04-28 16:04:14 · 128 阅读 · 0 评论