自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Handler

handler是Android给我们提供来更新ui的一套机制,也是一套消息处理机制,他可以在线程之间进行通信。他常用的通信方式为在另外一个线程调用handler对象的sendMessage()方法,发送的是一个Message对象,Message为一个单链表结构,他里面维护了一个静态的message池,我们在使用此方法时,最好调用handler的obtain方法,因为在Looper处理完messag...

2018-04-09 16:29:35 144

原创 EventBus解析

首先EventBus会先将一个类注册为一个接收者,在这个类中定义你要接收的事件方法。在注册的时候会先找出这个类中所有要监听的方法,首先从缓存中查找,如果找到了就立马返回。找的时候是先从里面一个状态池中取出一个没有被使用的状态对象,若所有的状态对象都已经被使用,则新new一个状态对象。这个状态对象用来存储接收者所对应的类,后续是用来寻找接收者中所对应的事件方法。在找这个类的注册方法时候,先去获取这个...

2018-04-09 16:28:01 238

原创 ArrayMap详解

首先说下为什么要用ArrayMap.java中的hashmap在初始化对象的时候便会分配16个大小的数组作为默认数组,无论你何时使用,若一个app中有特别多的hashmap用来存储少量数据的时候,就会造成特别多的内存浪费。因此出于此原因,google推出了ArrayMap这一数据结构作为移动端的用来存储键值对的轻量级的数据机构。首先我们在new对象的时候,并不会立即去申请存储空间除非你自己制定初始...

2018-04-09 11:16:34 1159

原创 优先队列

优先队列不同于其他队列,他不遵从先入先出的原则,他默认是对存入元素进行由小到大的堆排序,大小的评判可以根据元素自身的大小,或者在构造时传入的比较器进行大小的比较。他内部用于存储数据的是一个逻辑上的完全二叉树构成的小顶堆,实际上是一个数组,一个元素的左孩子的下标为:n*2+1,右孩子的下标为:n*2+2,元素在入队的时候会加在数组的末尾,然后通过求位置的逆运算找到其父节点,与其父节点进行大小的比较,...

2018-04-09 11:15:26 150

原创 HashMap源码分析

一.简述:HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。HashMap由于所有方法都没有加锁,所以效率高但是线程不安全。二.HashMap所使用到的数据结构:table是一个哈希表用来进行地址映射,里面存的是一个链表的头结点,可以以最快的时间来获取所要查找的元素,在不发生散列冲突的情况下,理想状态查找的时间复杂度为O(1).当

2017-09-27 18:18:23 230

转载 android中react-native热更新

本篇博客由江清清技术专栏独家发布,转载请注明出处。项目已开源到github,链接为:ReactNativeApp,欢迎大家fork,star上一篇和大家分享了如何在Android 现有App中集成React Native。本篇博客同样是react Native中比较经典的内容:热更新部署。android原生App中我们实现热修复有很多种选择:Tinker、hotFix、

2017-09-04 18:24:21 614

原创 从源码角度看surface的创建流程

本篇文章主要想介绍surface在创建过程中,所涉及到的native部分的代码,本篇以及上一篇介绍View的启动的源码都是基于android 7.0的源码进行解析的。android sdk中的源码只是java部分的,阅读c++的代码可以在这个网站上进行查阅。前言讲到这里,我们开始进入正题:我们在之前已经了解了view在framework层中java方法的调用流程,现在接着WindowManagerS

2017-08-15 12:08:27 889 1

转载 CMakeList配置之编译多个.cpp文件

上次提到AndroidStudio2.2进行NDK开发超方便的配置方式,不用进行Android.mk 配置,也不用进行Application.mk配置,只要配置CMakeList即可。那么问题来了,通过该方式生成的配置文件默认是只native-lib.cpp一个cpp文件的,那么怎么配置编译多个.cpp文件呢?以之前发布的NDK下获取IEIM并且使用MD5算法加密为例,我们另外

2017-08-09 21:37:40 3839

原创 从源码角度解析View的绘制过程

从源码角度解析view的绘制过程

2017-07-31 20:41:41 424

原创 Activity的启动流程

Activity的启动流程本文是我通过阅读android sdk源码了解到的activity启动的流程,如有不足之处,望告知。下面是activity启动时的函数流程- Activity.java 1.public void startActivity(Intent intent) 2.public void startActivity(Intent intent, Bundle o

2017-07-13 22:55:56 461

原创 安卓APP客户端与服务器通信

安卓4.0以后副线程无法直接访问UI组件,所以需创建一个Handler对象用于传递主线程与副线程之间的数据下面是代码演示:服务器:package socketTest;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import jav

2016-08-29 08:22:54 7001

原创 c语言不使用加号实现两个数的相加

C语言

2016-05-07 12:32:02 2441 2

空空如也

空空如也

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

TA关注的人

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