- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 RecyclerView的简单使用
RecyclerView是Android中很常用的一个控件了。最近一年似乎都在做系统这块,关于应用开发的一些知识点遗忘很多。今天开始慢慢找回来。 对于RecyclerView,首先想到的是使用它来显示一个滑动的列表。它支持横向滑动也支持垂直方法的滑动。它强制使用ViewHolder来进行item的缓存。 使用RecyclerView前应该清除每个item需要...
2020-03-10 23:53:53
299
原创 对ActivityManagerService的一些理解
1、ActivityManagerService的作用是负责管理系统中所有的Activity,想要使用它的能力,必须要获得一个它的对象。2、ActivityManagerService是在SystemServer进程中创建的,并且SystemServer会新建一个进程给ActivityManagerService运行。 创建完成之后,就把它注册到ServiceManager中。3、...
2020-03-09 12:10:50
1715
原创 Android Service、Messenger进程间通信
Android进程间通信有很多种,这里记录使用Service和Messenger来通信。在开始之前需要了解一下Android组件之Service。 Aandroid组件使用Service有两种方式,一种是启动方式,第二种是绑定方式。因为第一种启动方式,在启动Service之后,不会得到Service的任何返回,所以对Service的控制不是很好,没有更多的交互。而第...
2019-02-23 14:57:31
450
原创 Android组件之Service
Service作为Android四大组件之一,虽然不常使用到,但是还是需要有一定的了解。今天重看Service,需要把一些知识点记录下来,将来忘记时可以回看。 Service有启动状态,也有绑定状态。启动状态 生命周期:startService -> onCreate -> onStartCommand -> onDestroy。...
2019-02-23 14:32:15
168
原创 TCP协议的连接建立过程和释放过程简单介绍
计算机网络协议众多,TCP协议只是其中的一个。因为它的可靠性,很多数据传输都使用TCP协议,它也是面试时候考察的重点,所以有必要把学习到的知识点记录下来。 TCP协议的主要特点 1、TCP是面向连接的运输层协议。应用程序使用TCP协议之前,必须先建立TCP连接。传输数据完成之后需要结束连接。 2、每一条TCP连接只...
2019-01-22 11:44:24
33836
1
原创 网络请求原理浅析
网络请求几乎在日常使用计算机都需要使用到,计算机网络原理在大学的时候也曾作为必修课学习过。但是时间久远,加上那是主要是应付考试,所学深度、重点及当时学习的目的和工作之后不同,还是想再来了解一遍。 以前学计算机网络的时候,老师讲的是七层结构:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。工作之后,发现大家基本都使用五层的结构:物理层、数据链路层、网络...
2019-01-21 20:18:48
3252
原创 Android BitMap图片压缩
最近在网上看了一些关于图片压缩的博客,自己也动手实验了一遍,也算事对图片压缩有了一个了解,打算写个博客记录一下。文末附上参考链接。 Android中涉及到图片的话一般都会用到BitMap类和BitmapFactory类。而本文讲述的图片压缩也都是通过这两个类来实现的。Android中,图片占用内存大小计算公式:图片宽度 * 图片高度 * 图片每一个像素占用的字...
2019-01-18 19:38:36
1118
原创 Android View的事件分发机制
View的事件分发机制是Android开发中的难点之一。开发过程中虽然只是偶尔会接触到, 但是对于这个知识点也是有必要的去学习一下。因为不常用到,所以需要写下一篇博客来记录一下关于它的一些原理,以便有需要的时候可以回顾复习一下。 什么是事件?什么是事件序列? 当用户与应用发生交互时,会使用手指触摸屏幕,这个过程会发生一系列的事件。手指按下时,与屏幕发生接触、按压...
2019-01-17 10:07:23
5753
1
原创 View的工作原理之自定义ViewGroup
上一篇文章讲解了如何自定义普通的View,本文接着讲如何自定义ViewGroup。 在之前的工程中创建一个类MyViewGroup,继承自ViewGroup,重写它的三个构造方法及onLayout方法,这几个方法都是要求必须实现的。public class MyViewGroup extends ViewGroup { public MyViewGr...
2018-12-08 15:17:34
378
原创 View的工作原理之自定义View
前面的四篇系列文章,从源码开始详细的分析了View的Measure过程。学以致用,这篇文章就记录一下,学完View的Measure过程之后,自己自定义View的一些收获。本文讲解的是普通View的自定义,ViewGroup的自定义将在下篇讲解。 创建一个Android应用工程,新建一个类MyView继承自View。重写它的三个构造方法及onDraw方法:pub...
2018-12-08 13:40:21
210
原创 View的工作原理之Measure过程源码学习(四)
上一篇文章,学习了ViewGroup和View的measure流程。文章最后讲到,本文将会学习ViewGroup和普通View的onMeasure方法的工作。 因为ViewGroup是抽象类,它并没有实现onMeasure方法,而是选择让它的子类实现。之前学习DecorView的measure过程时,说到DecorView的父类继承自FrameLayout,Frame...
2018-12-07 19:13:56
166
原创 View的工作原理之Measure过程源码学习(三)
上一篇文章讲解了整个Android应用程序的View视图的顶级节点DecorView的Measure过程,文章最后就讲到了DecorView的onMeasure方法中调用super.onMeasure(widthMeasureSpec, heightMeasureSpec);之后,在FrameLayout的onMeasure方法中通过循环遍历子元素,从而往下进行每一级View的Me...
2018-12-07 17:24:13
224
原创 View的工作原理之Measure过程源码学习(二)
上一篇文章从Android程序启动过程讲解了Activity、PhoneWindow以及ViewRoot与DecorView的联系。本篇文章详细讲述一下DecorView的measure过程。 在了解measure过程过程之前需要先了解MeasureSpec这个类, MeasureSpec是一个32位的int值,高2位表示SpecMode(测量模式),低30...
2018-12-06 19:46:44
307
原创 View的工作原理之Measure过程源码学习(一)
在Android开发过程中,View控件的使用是最基本的技能,而自定义View技能的掌握也是非常重要的。这篇博文讲记录一下在读任玉刚老师的《Android开发艺术探索》一书中学习到的相关知识以及自己的一些收获。这里说明一点,在"View的工作原理之Measure过程源码学习"系列文章中,源码都是基于android-26这一套源码。 我们都知道,在开发android的过...
2018-12-06 16:15:31
238
原创 Method com/mysql/jdbc/ServerPreparedStatement.isClosed()Z is abstract
最近写一个 Spring Boot 的项目,链接数据库的时候报错:Method com/mysql/jdbc/ServerPreparedStatement.isClosed()Z is abstract 网上找到方法:一个说是jdbc链接的包版本太低,但是重复查看maven文件引进的版本号是没有问题的。 另一个说是包重复,但是仔细看mav...
2018-11-01 09:47:49
1933
原创 Flutter 应用之TabBar
本文记录Flutter开发的TabBar使用。 TabBar是选项切换页的意思,在android中通常是使用ViewPage来实现。在Flutter中,TabBar是被定义在Material Component中,所以他的使用需要在MaterialApp中。 为了让TabBar能正常使用,需要保持选项卡和内容同步,这个工作是由TabController来完成的。可以手动...
2018-10-17 15:11:40
3838
原创 RxJava2源码分析二之just、fromArray、fromIterable
Observable.just:接收1个以上,10个以下的参数,然后逐个发射。 Observable.fromArray:接收一个数组,从数组中一个一个取出来发射。 今天从源码来看一下Observable的just方法和FromArray。 public static <T> Observable<T> jus...
2018-08-24 14:21:30
3698
原创 RxJava2源码分析一
RxJava 在最近两年迅速火爆起来,最近学习RxJava2,免不了需要学习它的源码,写下博客记录学习结果。 RxJava 的设计理念基于观察者模式,这里就需要先了解一下它所涉及的东西。Observable,称为被观察者,由它产生一系列的事件。Observer,称为观察者。Observer和Observable之间通过subscribe方法发生订阅关系。这样Obser...
2018-08-23 17:34:31
221
1
原创 设计模式之简单工厂
今天学习这个设计模式--简单工厂模式。它不是23种设计模式种的一种。 简单工厂模式属于创建型模式,它提供一种最佳的创建对象的方式。在这种模式中,创建对象的逻辑不会向客户端暴露。简单工厂模式的出现得益于面向对象语言的多态性,它的实现方式是:新建一个抽象类或者接口,然后从这个抽象类或者接口派生出多个子类,然后在工厂类中根据传参的不同生产出不同类型的对象。 ...
2018-08-17 10:34:15
161
原创 设计模式之单例模式
最近学习设计模式想着把学到的东西记录一下。同时也想翻一下Android源码,试图在Android源码里面翻出所有的设计模式。今天开始第一个模式--单例模式。 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式主要解决一个全局使用的类频繁地创建和销毁。当需要控制类的实例数量,节省系统资源时,应该考虑使用单例模式。 优...
2018-08-16 19:40:43
228
原创 Java之反射机制
Java的反射是必学的知识点之一。因为之前使用到反射的基本没有,所以没有详细了解过反射的使用。最新学习Android源码,第三方框架源码多次看到反射技术,所以觉得有必要认真了解一些。 百度百科对Java反射的解释: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态...
2018-08-14 15:24:42
242
原创 java BitSet原理解析
学习了Java BitSet之后,写下这篇博文记录一下BetSet的原理及使用场景。一、BitSet原理 BitSet,通过这个名字字面意思(位集合),就可以知道,它的使用应该与位(Bit)有关。事实也确实如此,它(BitSet)用于标志一个“东西”是否存在于这个“东西”的一个集合里面。这句话很拗口,举实例来说明,比如:一个字符是否存在一个字符串中。一个数字是否存...
2018-08-10 14:49:19
2011
原创 Java 程序初始化过程
之前应聘笔试的时候,遇到过很多次,给出一段代码,里面有static静态变量,static代码块以及构造函数等,在它们初始化或者是代码块中设置打印log,然后问它们的打印顺序。再此之前一直不知道具体考察的是什么,好在现在终于知道了,考察的是程序的初始化过程。 那么程序的初始化过程是怎样的呢?main方法执行的时候,首先要去装载包含它的类(Beetle),然后发现Beetl...
2018-08-09 16:19:33
850
原创 java final关键字使用
final: 最终的。 在程序中,一般用于将一个东西设置为不可改变。final关键字根据使用情景的不同会有一些细微的差异。有时候不清楚final关键字的用法,会造成误用。 final关键字可以修饰变量、方法、类。 一、使用final关键字修饰变量 1、修饰基本数据类型 在编写程序的时候,有时候需要告诉编译器某一...
2018-08-09 15:11:43
2568
2
原创 Recyclerview的item设置selector背景无效
在做项目的过程中,只用Recyclerview,需要设置它的item的点击效果。毫无疑问使用的是selector。但是怎么都出现不了效果。 网上的方法试了挺多的。还是没效果。结果发现原来是selector文件里面。默认情况的item放在了前面。把它放到最后就好了。 一开始的设置是这样的,怎么都出不来效果 <item android:drawable="@...
2018-03-20 11:46:15
5366
2
原创 Android 多线程编程以及异步消息处理机制学习
Android多线程编程 Android中对于耗时任务不应该在主(UI)线程中执行,一般需要新建子线程来执行这些耗时任务。 Android多线程编程不比Java特殊,基本用法是一样的,都是使用相同的语法。Android中定义一个线程可以使类继承致Thread或者时实现Runnable接口,然后重写run方法。下面是一个例子: class MyThread extends Thread{
2018-01-19 17:32:36
300
原创 Android Handler的正确使用
在Android开发有时候会使用到Handler,但是每次新建一个对象的时候,开发工具都会报一个黄色警告。以前没做过大项目,觉得只要不是Error就可以不关心。但是上次出了一个内存泄露之后,不敢大意了,对于可能出现内存泄露的都需要认真处理下。查了下,这个黄色警告就是因为这样创建Handler有可能会出现内存泄露才报的。所以这里记录一下如何避免创建Handler发生内存泄露。 正常以前
2018-01-19 17:23:41
3812
原创 Android AIDL使用与原理浅析
AIDL是Android Interface Definition Language的缩写,也是Android接口定义语言。简单点说,AIDL是一种语言。设计这门语言的目的是为了更好的实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。还有一个目的是,简化Android开发人员的工作。详情转到我的github:点击打开链接AIDL相关链接:点击打开链接
2018-01-19 17:09:49
305
原创 Intellj IDEA 使用Hibernate5.2.3 新建映射文件步骤
Intellj IDEA 使用Hibernate5.2.3 新建映射文件
2016-12-19 14:59:01
2696
原创 org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed:
intellij idea 使用Hibernate出现报错
2016-12-18 23:38:14
2410
原创 LinCode-第365题 二进制中有多少个1
描述: 计算在一个 32 位的整数的二进制表式中有多少个 1.样例 给定 32 (100000),返回 1 给定 5 (101),返回 2 给定 1023 (111111111),返回 9分析: 要获得一个整数的二进制有多少个“1”,需要知道整数是通过除2取余来获得该整数的二进制。所以可以采用一个
2016-09-05 23:07:19
390
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人