自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (2)
  • 收藏
  • 关注

原创 Kotlin 协程源码解析

本文适合有协程使用基础并想了解内部原理开发者一、什么协程(Coroutines)看下Android文档对协程的定义:协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念。本文主要分析协程以下功能的内部实现编译器是如何实现协程的异步操作的同步调用?(如何帮我们解决异步操作回调地狱呢?)coroutine是如何通过CoroutineContext来切换上下文的?coroutine挂起和.

2021-05-31 17:09:39 912 1

原创 Linux的mmap 源码分析

Linux的mmap 源码分析1、mmap基础概念mmap() 将文件或设备映射到内存中。这是一种内存映射文件I / O的方法,实现用户进程和内核空间的映射。1.1 功能特点:mmap分为文件映射和匿名映射文件映射:将进程的虚拟内存区域映射到文件。即读取那些内存区域将导致文件被读取,这是默认的映射类型。匿名映射:会映射该进程的虚拟内存中没有任何文件支持的区域,内容初始化为零。系统都通过MAP_ANONYMOUS和MAP_ANON标志实现了匿名映射,但它并不是POSIX标准的一部分。1.2

2020-12-23 17:23:31 1882 2

原创 如何通过Android渲染管道提高渲染效率

一、Android 硬件加速发展过程从Android 3.0开始支持硬件加速渲染(就是通过GPU来渲染2D UI),优点是比软件渲染速度更快,缺点是更耗内存。从Android 8.0开始就支持对硬件加速渲染设置不同的渲染管道,目前有三种opengl、skiagl、skiavk,Android 8.0系统默认使用是opengl渲染管道,Android 9.0系统默认使用skiagl渲染管道,从Android 10.0开始不支持opengl渲染管道,只支持skiagl、skiavk,根据系统属性ro.hw

2020-05-27 17:58:11 4684

原创 Android 10.0 Input System 源码分析

##前言这篇文章主要解决以下问题:什么是Linux标准输入协议?Android Input System架构是怎样的?Android ANR产生的原理是什么?如何避免ANR?如何调试Android Input System?本文结构1、功能介绍2、总体设计3、详细设计4、开发调试5、总结6、资料一、功能介绍Linux 输入协议在 linux/input.h 内核头文...

2020-02-28 00:35:52 1271

原创 XStream 源码解析

项目地址:XStream, 分析的版本: v1.4.11,Demo地址:TestStream, 相关jar下载地址本文结构1、功能介绍2、总体设计3、详细设计4、如何提升XStream 解析速度5、自定义Mapper和自定义Converter6、总结##1、功能介绍1.1简介提供给Java使用的XML序列化工具1.2 如何使用public void testPopulati...

2018-11-22 17:37:14 1104 2

原创 View 中 Pivot简单讲解

Pivot的作用在android中对View进行Rotation或Scale时,就是需要指定Rotation或Scale的中心点(Pivot),默认Pivot点的值为View的中心。而Pivot坐标系的原点(0,0)是View的左上角,如下图为view Pivot坐标系。 View 中如何设置Pivot经过上面的介绍后,接下来介绍如何使用。 比如我们要设置View的右下角作为Piv...

2018-03-14 12:42:02 1479

原创 Android MaterialList源码解析

MaterialList源码解析项目地址:MaterialList,分析的版本:v3.2.2,Demo 地址:MaterialList Demo本文结构1、功能介绍2、总体设计3、详细设计4、MaterialList自定义布局5、总结1. 功能介绍1.1 简介MaterialList是一个帮助Android开发者获取漂亮CardView的Android库,通过这个库你可以很容易实现具有M

2016-07-06 17:29:43 27847 1

翻译 OkHttp 官方中文文档

OkHttp文档本文结构CallsConnectionsRecipesInterceptorsHTTPS 本文翻译来自 官方OkHttp WikiOkHttp文档一Calls1 请求2 响应3重写请求4重写响应5后续请求6请求重试7 呼叫8调度二Connections1URLsURLs摘要2 Addresses3 Routes4Connections三Re

2016-06-28 21:09:50 29082 13

原创 Java类型信息与应用--动态代理

Java类型信息与应用--动态代理本文结构一、前言二、为什么需要RTTI三、RTTI在java中的工作原理四、类型转化前先做检测五、动态代理六、动态代理的不足一、前言运行时信息使你可以在程序运行时发现和使用类型信息Java在运行时识别对象和类的信息的方式:1.一种是RTTI,它假定我们在编译时已经知道了所有的类型。 2.另一种是“反射“机制,它允许我们在运行时发现和使用类的信息。

2016-05-24 23:26:03 5769

原创 深入理解RecyclerView的设计和实现

RecyclerView作为官方替代ListView的控件,它具有以下优点自定义布局方式,使我们轻松实现ListView、GridView形式,瀑布流形式定义ViewHolder代替View,封装了缓存判断逻辑RecyclerView实现流程mRecyclerView.setLayoutManager(getActivity());mRecyclerView.setHasFixedSize(

2016-04-16 17:17:30 2900

原创 JavaScript模拟生成二维数组及多维数组

JavaScript模拟生成二维数组及多维数组本文根据项目需求整理而来Js数组简介通过下面语句能过生成一个数组var A=new Array();//创建一个数组但是要生成A[10][10]这样的数组,要如何实现呢? 很明显js只能实现一维数组,实现二维数组可以通过以下代码模拟var A=new Array(10);for(var i=0;i<10;i++){ A[i]=new Arra

2016-03-16 21:29:11 4306

原创 Please ensure that adb is correctly located

adb的”5037”端口被占其他EXE占了netstat -aon|findstr “5037”(查询系统是哪个进程使用了端口5037的是)发现是6492的进程占了用了“5037”tasklist|findstr “6492”(获得任务列表”6492”具体是哪个exe在用)发现是shuame_helper.exe占用了5037这个端口好把shuame_helper.exe kill掉后,重启ecli

2015-08-05 09:59:31 1250

原创 Android Studio 报No resource found that matches the given name '@style/Theme.AppCompat.Light'.

这是因为android studio工程中没有引入相应的支持库 所以在build.gradle中的 dependencies { //编译libs目录下的所有jar包 //compile fileTree(dir:’libs’,include:[‘*.jar’]) compile files(‘libs/android-async-http-1.4.6.jar’)

2015-08-04 11:12:51 2032

XStream最新jar包

在https://github.com/x-stream/xstream通过maven打包的最新jar包

2018-11-06

android xml 解析

android解析xml文件cone,加快开发速度,移动开发必备,你值得拥有

2014-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除