- 博客(62)
- 资源 (13)
- 收藏
- 关注
原创 Android-RxJava源码分析
最简单的源码分析//创建一个上游 Observable:Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer&...
2018-05-03 21:25:42
371
原创 Android-RxJava使用介绍
RxJava的应用场景我认为“RxJava的应用场景到底在哪里?”的答案,应该到“什么是Rx”里找?先弄清楚“什么是Rx”,然后再思考RxJava可以给我们的项目带来什么好处? Rx是什么:Rx是一个基于响应式编程思想实现的函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序(可以这样定义:Rx=Observable + LINQ + Schedule) ...
2018-05-03 21:18:02
444
原创 Android-Volley源码分析
Volley整体框架简介队列分发器执行流程CacheDispatcher流程缓存分发器,在RequestQueue.start()时,就会在App中启动Thread专门用于处理缓存读取操作。读取缓存的关键操作流程伪代码如下:while(ture){ request = mCacheQueue.take(); //判断请求是否已取消 //如果有缓存 --> 判断缓存是否...
2018-04-12 09:55:52
260
原创 Android-源码下载编译教程
Ubuntu安装git工具sudo apt-get install gitgit config –global user.email “test@test.com”git config –global user.name “test”Ubuntu安装repocurl https://storage.googleapis.com/git-repo-
2017-11-24 20:49:26
451
原创 Android-Gson使用详解
Gson介绍Gson的基本用法Gson解析默认使用方法很简单,将json转换成对象用Gson.fromJson(),将对象转化成json用Gson.toJson()即可。Gson解析解析数组和List也是用相同的方法。当解析List的时候,可能会遇到泛型操作。此时需要使用TypeToken对象来实现泛型支持。public static void main(Strin
2017-10-08 00:20:28
1784
原创 Android-Fragment源码解析
UML类图主要类含义介绍FragmentControllerFragmentController为Fragment的宿主提供一个控制器,对Fragment生命周期操作,提供一个控制流程。FragmentController中持有FragmentHostCallback对象,对于Fragment生命周期的操作,主要是通过FragmentHostCallback来实现的。而Fragm...
2017-09-12 18:35:12
1032
原创 Android-LeakCanary原理分析
介绍LeakCanary项目是为Java&Android开发提供的一个自动检测内存泄漏的工具,现在很多项目都在引入来提高代码质量,减少不必要的内存泄漏。核心方法流程图初始化流程通过以下方法,将内存泄露框架添加到App中。//在Application中添加内存监控框架LeakCanary.install(this);添加到App中,实际上就是构造...
2017-08-15 22:30:44
1110
原创 Android-BlockCanary框架源码分析
介绍BlockCanary是Android平台上的一个轻量的,非侵入式的性能监控组件,应用只需要提供一些上下文环境就可以在使用应用的时候检测主线程上的各种卡顿问题,并通过组件提供的各种信息分析出原因并进行修复。BlockCanary会在发生卡顿的时候记录各种信息,输出到配置目录下的文件,并弹出消息栏通知。核心原理介绍关于UI的操作,都是通过唯一的Handler.MainLo...
2017-08-12 15:32:52
534
原创 Android-DLPlugin插件化框架
介绍DynamicLoadApk 原理的核心思想可以总结为两个字:代理。通过在 Manifest 中注册代理组件,当启动插件组件时首先启动一个代理组件,然后通过这个代理组件来构建、启动插件组件。从而实现了动态添加插件的效果。插件类介绍DLPluginManager插件管理模块,负责插件的加载、管理以及启动插件组件。Proxy代理组
2017-07-04 00:08:16
979
原创 AbsListView中item重用机制
AbsListView中item重用机制ListView是一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到成百上千条甚至更多,ListView都不会发生OOM或者崩溃,而且随着我们手指滑动来浏览更多数据时,程序所占用的内存竟然都不会跟着增长。要达到这种效果,一定是重用了item,将划出屏幕的item作为新item,添加到屏幕中,从而达到了内存稳
2017-06-21 21:08:59
454
原创 Android-getSystemService分析
调用流程-> ContextImpl.getSystemService(XXX) -> SystemServiceRegistry.getSystemService(this, name); -> ServiceFetcher.getService(context)方法内容Conte
2017-03-29 09:58:01
426
原创 Android-NoHttp网络框架
NoHttp网络请求基础框架网路请求流程图网络请求设计NOHttp底层使用OKHttp网络请求下载请求框架网络请求缓存框架请求缓存配置实现框架参考http://blog.youkuaiyun.com/yanzhenjie1003/a
2017-03-20 16:36:03
558
原创 服务器-Web框架配置
简介阿里云服务器ECS没有安装J2EE环境的攻略,只能自己安装。下面讲解安装JDK,Tomcat,Mysql过程。 这文章,从去年就想发表,到现在在有时间。我也是够了~~JDK安装查看系统版本getconf LONG_BIT64//这个命令是查看CPU当前运行模式,我这里是64位的下载JDK下载jdk的压缩包:http
2017-03-18 14:06:15
560
原创 Android-解决TextView上下留白问题
问题为什么TextView默认上下留空?设置includeFontPadding参数,是否有效去除上下留空?includeFontPadding参数比较图源码分析(展示重点方法)先看TextView计算过程:protected void onMeasure(int widthMeasureSpec, int heightMeasu
2016-10-14 00:11:16
16058
1
原创 Android-屏幕知识总结
屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米屏幕分辨率屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1960*1080dp、dpi、sp、pxpx一个像素点 ,如手机分辨率320*480表示宽有320像素,高有480像素。dpi
2016-10-05 11:59:57
711
原创 Android-自定义图片加载框架
框架结构ImageCache类(图片缓存)流程介绍:设置了两级缓存,将最近使用的图片保存到内存中,将网络加载过来的图片保存到本地。其中保存到内存中图片,为经过压缩的图片,而保存到本地的为网络加载的原图。保存到内存中,用到了最近最少使用算法的缓存,构造如下:int maxMemory = (int) Runtime.getRuntime().maxMe
2016-09-03 22:33:36
1412
1
原创 Android-点击事件分发机制验证
简介点击事件的事件分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生之后,系统需要这个事件传递给一个具体的View,而这个传递过程就是分发过程。点击事件的分发过程由三个重要方法共同完成:dispatchTouchEvent 事件分发onInterceptTouchEvent 事件拦截onTouchEvent 事件
2016-05-28 00:40:59
5052
原创 Android-Intent详解
显示Intent启动Activity方式总结: 显示启动就是在明确指出要启动的Activity或者Service的类或者包名。 显示Intent调用Activity,有以下5种方式。通过查看内部代码,可以知道其实都是在设置ComponentName对象。通过设置ComponentName对象,来确定应当显示的Activity对象。
2016-04-23 17:06:25
1197
原创 Android-Sqlite使用手册
sqlite3使用手册查看数据库版本sqlite3 -version打开或创建数据库 sqlite3 DatabaseName.db 查看数据库文件信息 .database查看数据库表 .table
2016-04-17 18:42:24
2174
原创 Android-findViewById()方法分析
findViewById()方法分析首先,看我们在Activity中调用的findViewById方法:@Nullable public View findViewById(@IdRes int id) { return getWindow().findViewById();}调用了Window的findViewById()方法,获取结果。那么下面,我们就来看看Window
2016-03-21 19:40:42
7392
原创 Android-Preproty animation解析
android-Property Animation介绍属性动画(property animation)系统,是一个健壮的框架,可以实现任何将任何属性设置为动画。不管对象是否被绘制到屏幕上,你都可以声明一个动画去改变它的属性值。属性动画是指在定长时间内改变指定属性的一种动画。你可以从下面这些特性入手去定义一个属性动画(property animation):Duration(持续时间):你可以指定
2016-03-11 19:46:05
792
转载 Anidrod-View Animation动画介绍
android-View Animation介绍:视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。视图动画,也叫Tween(补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。补间动画通过XML或Andro
2016-03-11 19:37:20
743
原创 Android-XML转成View过程简述
背景一般我们创建Activity的时候,先是在布局XML中添加好想要的内容。之后,在Activity的java文件中,添加如下代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi
2016-03-11 19:35:26
1615
转载 Android-Frame Animation介绍
介绍:引用:Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画。Frame动画可以被定义在XML文件中,也可以完全编码实现。继承关系介绍:从继承关系中可以看出来,其实AnimationDrawable就是一个绘画容器。使用时,将多个绘制出来的图片添加到AnimationDrawable中,再一帧帧的播放出来,从而达到动画效果。和一开始引用的介绍内容不谋而合。A
2016-03-11 19:33:24
625
原创 学习笔记--内核中C语言和汇编的使用
前言好像有好长一段时间没有写认真这一个技术型的博客了。感觉没有将新学的知识记录下来,很快就丢掉了,回过头来,还是一场空。所以,写博客是一个长期而持久的事情。最近,在学习linux内核,用到了AT&T汇编和C语言。在内核中,总是出现两者的混编,在这里总结一些最近的学习成果。等到以后需要用到的时候,可以快速回忆起来。下面开始进入主题了。希望我的这个文章,不会让读者嫌弃,如有错误,请指出。C语言的编译和连
2016-01-23 15:41:03
1556
原创 汇编语言--ARM汇编
ARM汇编指令总结目的总结目的是为了看懂ARM返汇编程序含义。如果是抱着来看这篇blog的盆友,希望可以帮到你们;如果有错误,请多指出。谢谢!#ARM指令的一般格式arm指令字长为固定的32位。一条典型的arm指令编码格式如下:一条典型的ARM指令语法格式如下所示: 参数 opcode:指令操作符编码cond:决定指令的操作是否影响CPSR的值S:决定指令操作是否影响CPSR的值Rd:目标寄存器
2015-12-09 19:30:40
7366
Android-Intent使用方法详解
2016-04-23
Storyboad动态刷新-IBInspectable和IB_DESIGNABLE
2015-10-14
自定义Control按钮—Demo
2015-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人