- 博客(21)
- 收藏
- 关注
原创 全方位解析liveData工作原理以及使用方法
1. 简介LiveData是一个抽象类,MutableLiveData是其用的比较多的子类,在MutableLiveData中只是吧postValue和setValue方法的限制符改为public,以此来防止数据的混淆MediatorLiveData是liveData的聚集管理者。通过其来实现统一管理和中转。mVersion 是一个同步标志类,liveData在做分发的时候,通过这个mVersion来控制是否应该进行数据的分发。特性确保UI符合数据状态不需要手动处理数据保持最新 的数据
2020-10-18 16:56:54 1418
原创 android JETPACK组件之ROOM
1. Room注解@interface Dao The class marked with {@code @Dao} should either be an interface or an abstract class. At compile time, Room will generate an implementation of this class when it is referenced@interface Database Marks a class as a RoomDatabase@
2020-10-09 10:17:23 255 1
原创 kotlin01_基础知识语法
在java中,我们在声明一个变量时,需要将变量类型放在变量名前面,而kotlin正好相反,变量名在前,变量类型在后。// java String a= "i ma java"// kotlin val a: String ="i am kotlin"增强的类型推到。编译器可以在不知道显示声明的基础类型下,自动推到出它所需要的类型。val string="i am Kotlin"val int =0val float=1.0fval long=1314Lval double=5.
2020-06-01 11:35:45 233
原创 java线程安全hashMap和concurrenthashMap源码对比分析
怎样停止一个线程?官方给出了两个api:stopinterrupt但是stop是已经被废弃了。废弃原因是什么呢?线程共享的东西有三种:cpu,共享内存,文件Thread1访问共享内存,并持有锁,线程2等待,此时阻塞Thread1释放锁,被销毁,此时Thread2立即持有共享内存的锁,如果Thread1有脏数据没有及时清理,这时候,Thread2运行时发现内存状态异常,可能会cra...
2020-03-14 15:43:45 391
原创 Activity的布局绘制流程
结构|---ViewRootImpl| |---requestLayout()| | |---checkThread(); // 检查当前线程是否为主线程| | |---scheduleTraversals()| |--- scheduleTraversals();| | |---mTraversalRunnable| | | |---do...
2020-02-19 18:43:49 311
原创 知识点整理—java虚拟机
1. java虚拟机是继续栈的还是基于寄存器的?有没有基于寄存器的虚拟机?有什么差别java虚拟机是基于堆栈的,在java虚拟机栈中,每个方法执行的同时,会创建一个栈帧栈帧,用于储存局部变量表,动态链接,操作数栈,方法返回地址。jvm是基于堆栈的,而dalvik虚拟机是基于寄存器的,基于堆栈的指令占用空间小,一个指令常常占用一个字节,所以叫做字节码,而dalvik由于需要指定源地址和目标地...
2020-02-13 14:23:19 212
原创 (01)recyclerview的基本使用
1.几个重要的类1.1 简述:首先说明他的几个重要的类1.1.2 RecyclerView.Adapter抽象类,为RecyclerView提供数据,一般根据不同的业务需求来编写具体的实现类。1.1.3 RecyclerView.LayoutManager:抽象类,主要用于测量RecyclerView的子Item,以及根据不同的布局方式来实现Item的布局效果,v 7包自带的实现类有:L...
2020-01-17 11:33:24 336
原创 okhttp3-拦截器
引言okhttp拦截器采用了责任链的设计模式,分层处理对应逻辑,并且可扩展性高。 Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. List<Interceptor> interceptors = new A...
2020-01-14 23:54:22 679
原创 java 常用线程池讲解
1.线程池的好处重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。能有效控制线程池的最大并发数,避免大量的线程之间因为互相抢夺系统资源而导致的阻塞现象。能对线程进行简单管理,并提供定时执行以及指定间隔循环执行等功能。相关链接锁2. 原理分析2.1 Executor只有一个excute方法 /** * Executes the given comma...
2020-01-14 23:53:43 175
原创 java 线程中常常遇到的锁的讲解
怎样产生死锁互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其它进程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不放。不剥夺条件:指进程已获得资源,在使用完之前,不能被剥夺,只能在使用...
2020-01-14 23:52:11 191
原创 androidAPP的启动流程
1.APP的启动流程Zygote进程的创建APPRuntime1.1 先来认识下zygote什么是Zygote? Zygote是Android系统中特有的进程,不过说白了也只是名字特有而已, 言外之意,不多说了.总之我们先搞清楚一件事,Zygote一个最主要的作用,就是加快Android应用程序启动和运行速度.为什么这么说? 这就要知道Zygote进程在启动时做了什么.Zygote进程...
2020-01-14 23:51:04 444
原创 基于ExoPlayer的音频播放器以及进度悬浮窗
简述最近在使用EXOplayer做关于音频的开发,目标如下通过service绑定activity,能在后台播放,同时,在退出activity之后,显示一个悬浮窗,悬浮窗能同步播放器的进度,点击则进入播放界面。关于ExoPlayer这个库是goole官方推出的,十分强大,根据项目需要我主要使用它来进行音频播放。列举几篇有参考意义的参考文献官方介绍先来一张图片镇楼使用步骤...
2019-12-27 20:19:57 3615
原创 HandlerThread解决的痛点以及原理分析
作用,解决痛点handler 在子线程中使用需要的步骤:在这里附上一篇handler 原理介绍在run方法中: Looper.prepare(); // 在这里进行handler的声明以及绑定looper. Looper.loop(); handlerThread 继承自Thread,也是一个线程。 它在run方法中已经为我们写好了。 ...
2019-11-22 14:46:53 456
原创 栈
引言栈在计算机世界中的使用很多,比如撤销操作,程序栈。栈的特点是: Last in first out栈的重要方法E pop() 出栈E peek() 查看栈顶元素void push() 向栈中添加元素int getSize();boolean isEmpty()java代码如下:package com.example.disignmode.structure.myst...
2019-07-05 12:57:24 150
原创 毕设项目:MVP+Retrofit2+okhttp3+rxjava+butterknife搭建的景区信息APP_01篇
引言终于毕业了,我把我的毕设贡献给大家吧,在实习阶段,公司框架主要都是使用的mvp+retrofit+okhttp3+rxjava的框架搭建的,我也根据自己的理解,搭建了一个项目作为毕设,关于mvp的优缺点我就不多说了,但是的确能让业务逻辑变得更加清晰。基于这个项目我就在此做一个抛砖引玉的效果吧,希望大家看了之后有自己的感悟。界面欣赏界面的话,因为是周末抽时间搞得毕设,比较匆忙,希望大家不...
2019-06-25 22:09:46 424
原创 okhttp原理分析(持续更新),包含okio了解,拦截器以及断点下载的使用
1. 原理1. okio最基本的接口只有两个:Sink(writer)、Source(Read),大概相当于OutputStream和InputStream在原生接口中的地位。这两个接口中只定义了一些最基础的IO操作方法2. 拦截器流程|---RealCall| |--- Response getResponseWithInterceptorChain()getRespons...
2019-04-30 18:18:48 558
原创 ViewGroup的实践以及事件分发
1. 实践:Tablayout(流式布局)1.1 测绘以及排版ViewGroup的自定义首先需要解决的问题是子View的排版以及ViewGroup的测绘。也就是说会设计到两个重要的方法:onMeasure以及onLayout1. 测绘在流式布局中,最显著的特征是一行一行地往下排view如果在该行中,不能塞下了,则另起一行。同时值得注意的是margin怎样去获取。 @Override ...
2019-02-10 23:18:02 167
原创 通过真实的log实例了解View的事件分发
1.View的事件分发有两个重要的方法:diapatchTouchEvent和touchEvent|---View| |---boolean dispatchTouchEvent(MotionEvent event)| |--- boolean onTouchEvent(MotionEvent event)1. dispatchTouchEventdispatchTouch...
2019-02-10 23:17:09 178
原创 自定义View之文字绘制相关问题。
1. 自定义属性在values下面新建一个attrs的文件&lt;resources&gt; &lt;!--name最好是自定义View的名字--&gt; &lt;!--name:名称;format:格式--&gt; &lt;!--字体大小,宽高 :dimension--&gt; &lt;!--referen
2019-01-25 14:31:16 227
原创 Handler消息机制的使用与(部分源码分析),不断更新
1.作用,背景,产生原因1.1 作用在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理.1.2 产生原因答:多个线程并发更新UI的同时 保证线程安全在子线程中更新UI会产生“程序无法响应ANR”2.相关概念handler: 处理者,管理者关于Handler的相关概念如下:在下面的讲解中,...
2019-01-22 15:16:29 246
原创 io流相关总结
1.目录java.io.file类的使用io原理及流的分类节点流缓冲流转换流标准输入输出打印流数据流对象流随机存取文件NIO中的path,paths,file类的使用。1. java.io.file类的使用public class Fileextends Objectimplements Serializable, Comparable&amp;lt;File&amp;gt;...
2018-12-30 22:28:51 152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人