- 博客(21)
- 收藏
- 关注
原创 OkHttp源码分析
本篇文章将从OkHttp的使用步骤入手逐步去分析Okhttp的源码。常见使用://OkHttpClient的创建OkHttpClient client = new OkHttpClient();//Request的创建Request request = new Request.Builder() .url(url) ....
2019-12-17 21:36:23
184
原创 HashMap实现原理及源码分析
HashMap基本特点HashMap是基于hashing原理,使用put(key,value)存储对象到HashMap中(但是并不保证其顺序),使用get(key)取出对象的一种数据结构。 HashMap可以接受null键和null值(但是只允许一条记录的键为null,值没做限制)。 HashMap是非线程安全的。所以在多线程的情况下要使用的话,可以使用Collections.synchr...
2019-12-17 21:33:11
202
原创 EventBus源码分析
本篇文章将从EventBus的常用使用步骤去逐步分析它的源码和内部实现,其中会额外提到粘性事件、观察者模式和接口回调的区别以及EventBus线程调度相关知识。下面就从以下的使用流程去逐步分析EventBus的源码。初始化->注册->发送事件->解除注册初始化使用EventBus时我们一般通过调用getDefault来获取EventBus对象,EventBus的获...
2019-09-22 21:55:30
208
原创 Android Presentation实现双屏异显
一、概述现在越来越多的Android设备有多个屏幕,双屏异显应用场景最多的应该就是类似于收银平台那种设备,在主屏上店员能够对点商品进行选择录入,副屏则是展示给我们的账单详情,但是它只通过了一个软件系统就实现了双屏异显这个功能,而Presentation正是这其中的关键。二、Presentation分析简述:首先从它的继承关系上来看Presentation是继承自Dialog的,就是说它...
2019-07-17 18:34:48
1782
原创 Java 注解
一、注解概述官方:注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。人话:注解类似于标签,相当于给一个东西贴上标签,让编译器能更好的认识它,从而进行处理。元数据 元数据指的就是用来描述数据的数据,即注解是一种用来描述数据的数据。二、元注解元注解只是在使用的范围上有限制,它是用来给注解添加注解的。元注解一...
2018-12-12 22:08:49
140
原创 Android 消息机制
一、消息机制概述Android的消息机制主要是指Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程,Handler的主要作用是将一个任务切换到当前Handler所在的线程中去执行。Android提供这个功能主要是它规定了访问UI只能在主线程中进行,如果在子线程中访问UI,那么程序就会抛出异常。以上规定的原因是:Android的UI控件不是...
2018-12-06 22:33:45
260
原创 Java 反射
一、反射概述JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。二、反射的原理举个例子Student s = new Student(),我们通过new这个操作符在堆区为这个对象分配了内存空间,完成了s的创建。在从new ->...
2018-12-03 17:21:31
182
原创 Android 事件分发机制
一、基本认识1.1事件分发的顺序: Activity -> ViewGroup -> View1.2事件分发方法的协作 主要由dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()共同协作完成1.3大致流程: Activity -> ViewGroup:当一个点击事件产生...
2018-11-26 22:21:08
157
原创 Java集合框架
Java集合主要由两个接口派生而出:Collection和Map而这主要的集合又大致分为:Map,List,Set,Queue 集合和数组的区别1.数组长度必须在初始化时指定,只能保存定长数据;集合则可以保存数量不定的数据2.数组元素可以是基本类型的值,也可以是对象;集合则只能保存对象,基本类型的变量要转换成对应的包装类才能放入集合中(如:int -> Integer)...
2018-11-17 21:59:58
157
原创 对虚拟DOM的一点理解
起因:DOM的操作是很慢的,每次涉及到的状态改变都会重新进行DOM操作。怎么去进行性能优化?(整体的思想是减少对DOM的操作)1).既然DOM操作很慢,那就不用DOM优点:性能全面提升 最开始有个公司提出了一个全新的理解,既然DOM很慢,那么就不用DOM,他们直接用的是canvas(画布),相当于用户操作的是一个canvas,而没去改变DOM节点,这样避免使用DOM就...
2018-10-07 22:21:24
650
原创 一个完整的RN项目总结
直接从进入app开始讲每一个功能的具体实现。先声明本文提到的这些功能,我的实现方法可能并不是最优的,如果有更好的实现方法,欢迎交流!转载请注明出处!1.引导页只在第一次打开app后出现:实现方法:类似于原生Android的处理方法,直接存一个值到本地,原生用的是Sharedpreferences,RN里面就直接用AsyncStorage。原理就是在第一次打开的时候设定一个值保存在本...
2018-09-17 16:05:58
1089
原创 React-Native学习之路(十)使用第三方库实现分享功能
本文章实现了第三方分享、登录的功能,主要基于另一个博主的文章,在此仅对实现方法及集成过程中的问题进行详细的记录,方便自己日后回顾,详细操作请参考原作https://blog.csdn.net/u013718120/article/details/75040805作者的github:https://github.com/songxiaoliang/react-native-shareAndr...
2018-08-15 15:35:57
1849
原创 React-Native学习之路(九)TabNavigator隐藏问题的分析及解决
首先说明一下我是用的TabNavigator+StackNavigator来写的页面跳转。我们先分析一下为什么在每个Tab的Item里面实现跳转,跳转页面还是会有底部的TabNvigator先看下我出问题的项目结构,首先,我们可以看到我给这个Tab的Item指定的显示页面是MyPage,然后因为我MyPage中涉及一系列的跳转,所以我用了一个StackNavigator来实现MyPag...
2018-08-01 21:59:34
2090
原创 React-Native学习之路(八)TabNavigator
TabNavigator2018年7月23日15:46通过TabNavigator来实现底部菜单栏,因为这是一个第三方的库,所以使用这个TabNavigator需要先下载npm install --save react-navigation然后导入Import TabNavigator from 'react-native-tab-navigator'因为是个第三方库,...
2018-07-24 22:14:47
587
原创 React-Native学习之路(七)ListView
ListView2018年7月22日15:53一、实现ListView基本显示中的两个必要属性:1).dataSource: dataSource是ListView的数据源,首先在state中去创建一个ListView.DataSource数据源,然后通过cloneWithRows方法为其传递一个数组,其中提供给数据源的rowHasChanged函数可以告诉Lis...
2018-07-24 22:10:50
868
原创 React-Native学习之路(六)Navigator
Navigator页面跳转和数据传递2018年7月21日15:371.首先需要导入npm install react-native-deprecated-custom-components --save然后在项目中使用navigator的时候import {Navigator} from react-native-deprecated-custom-components...
2018-07-24 22:06:34
209
原创 React-Native学习之路(五)Touchable系列组件
Touchable系列组件2018年7月21日11:14TouchableWithoutFeedback:响应用户的点击事件,如果你想在处理点击事件的同时不显示任何视觉反馈,使用它是个不错的选择。 TouchableHighlight:在TouchableWithoutFeedback的基础上添加了当按下时背景会变暗的效果。 TouchableOpacity:相比Touchable...
2018-07-24 22:05:12
337
原创 React-Native学习之路(四)Flexbox和一些普通布局属性
Flexbox和一些普通布局属性2018年7月20日20:23flexbox是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。采用flex布局的元素,称为flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为flex项目(flex item),简称"项目"。首先看下flexbox的排列:分为主轴和交叉轴(侧...
2018-07-24 22:02:03
249
原创 React-Native学习之路(三)props和state
React-Native props和state2018年7月20日10:23props:即属性,它是用来描述一个组件的特征的,由父组件传递给子组件,而且一经指定,在被指定的组件的生命周期中则不再改变第一个this.props.name就会使用PropsTest的组件,在PropsTest中设置后就能在子组件进行显示默认属性:可以在这个子组件中设置默认的属性,就必须...
2018-07-24 21:50:22
595
原创 React-Native学习之路(二)组件的生命周期
React-Native组件的生命周期2018年7月19日16:03 上图为React-Native组件的生命周期图,由于我编写时constructor已经替代了getDefaultProps和getInitialState两个方法所以重新做了张图以供学习。一、初始化阶段1).constructor: constructor即构造函数,我们可以在里面初始化...
2018-07-24 21:45:03
1135
原创 React-Native学习之路(一)配置及环境搭建常见问题
ReactNative配置及环境搭建常见问题2018年7月19日11:431.找不到sdk:有两种方式:1).在环境变量中加入一个新的"ANDROID_HOME"在这里面把电脑上的sdk位置设置进去我的电脑像找不到JDK这样配置出现不了具体路径,就用了第二种方法2).复制AS根目录下的local.properties到新建项目的android目录下经实测只有第二种方法能...
2018-07-24 20:36:59
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人