自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ricky_Ling的博客

负阴抱阳,知行合一。

  • 博客(15)
  • 问答 (2)
  • 收藏
  • 关注

原创 从源码角度分析 — Handler原理

在分析消息机制Handler之前,我们先了解下ThreadLocal这个类,ThreadLocal是一个线程内存的数据存储类。它的作用是为变量在每个线程中存储了一个副本,反过来说就是:为使用该变量的线程提供了独立的变量副本。参考一段示例代码:private static final ThreadLocal<Integer> threadLocal = new Threa...

2018-04-16 21:10:59 292

原创 从源码角度分析-HashMap

文章从下面几点去分析HashMap(基于JDK1.8)HashMap的概念工作原理hashCode()和equals()的作用分别是什么扩容机制1、HashMap的概念HashMap是基于Map接口实现,以键值对的形式存储,键值允许null值,存储是无序的,非同步的。下面提供官方文档中的描述: Hash table based implementation of th...

2018-04-14 16:47:05 406

原创 Android Activity的启动流程分析

Android Activity的启动流程分析在应用中我们启动一个Activity,一般情况都是通过调用startActivity()。本文也是针对这个作为入口去探索Activity的启动流程。如今google和度娘一搜Activity启动流程,可以说是泛滥成灾了。虽然这样,但始终是别人的理解和总结,所以自己看了源码后也记录下收获。不闲扯~~~咱直接入正题:上个图! 上图可以让我们对...

2018-03-31 15:37:26 556

原创 Android中AsyncTask的执行过程

AsyncTask是由Android提供的一个轻量级的异步类,其内部分封装了线程池和Handler。相信绝大多数的Android开发者都接触过它,简单粗暴的就实现了异步网络请求,UI更新。在开始源码分析执行过程前,先看一张图,主要抽取了执行过程中比较关键的几个属性。下面开始进行源码的分析,先从一段简单的示例代码开始。public class MainActivity extends AppComp

2017-10-27 17:46:23 1660 6

原创 Java 23种设计模式之 - 适配器模式

适配器模式分为三种:类的适配器、对象的适配器、接口的适配器。 简单的理解适配,就是把两个不相匹配的东西变的匹配。下面以手机使用普通u盘为例,一般情况下,手机需要使用u盘时,由于接口的不吻合,需要使用到OTG线进行接口转换。1、类的适配器usb接口public interface Usb { void usbPort();}OTG类public class OTG { publ

2017-10-20 23:40:45 726

原创 Android布局加载优化之懒汉模式-ViewStub

Android布局加载优化之懒汉模式-ViewStub 谈到布局优化,通常都会想到标签include和merge。简单先说下这两个标签的好处:include可以减少布局文件内容,比如,在我们需要在多个布局中都添加标题栏时,可以创建一个单独的xml文件,添加标题内容到该xml中,然后在需要用到的目标布局里面用include标签添加已创建好的标题栏;merge可以减少多余的包含控件。两者一起使用,可

2017-09-17 15:12:37 1095

原创 Android Activity启动模式分析

Android Activity启动模式分析standard 标准启动模式singleTop 栈顶复用模式singleTask 栈内复用模式singleInstance 全局单例模式standard 标准启动模式 该模式也是Android中activity默认的启动模式,每次启动目标activity时,都会创建一个新的实例,添加到当前的Task中,看下图:原有栈中含有A-B-C三个ac

2017-09-16 10:36:14 929

原创 Android dp和px的转换

Android dp和px的转换 在android开发中,布局中一般使用dp作为单位,很多时候需要使用px,这时就需要通过代码中转换。无事记录下,说不定哪天脑子短路,忘了怎么写,还可以翻翻。(^▽^) public class DensityUtil { //dp转px public static int dip2px(Context contex

2017-09-01 12:17:04 471

原创 Android View的事件分发

View的事件分发机制: 分析的对象 MotionEvent: 表示点击事件, 例如Action_DOWN、Action_UP、Action_MOVE等事件的传递过程: dispatchTouchEvent: 事件分发 (事件能否传递给当前View)onInterceptTouchEvent : 事件拦截(是否拦截事件)onTouchEvent :

2017-06-17 21:58:32 529

原创 Kotlin学习之路(一)

1. kotlin的简介 随着Google I/0 2017的结束,Kotlin已经成为热搜。耐不住自己内心的寂寞,于是开始了Kotlin的“入坑之路”。Kotlin 是⼀门针对 JVM、Android、JavaScript 以及原⽣平台的开源(OSS)静态类型编程语⾔。它是由 JetBrains 开发的。该项⽬开始于 2010 年并且很早就已开源。Kotlin 既具有⾯向对象⼜具有函数式结构。

2017-06-07 15:21:51 1419 3

原创 RxJava2.0 初识

RxJava2.0 初识前言 RxJava现在已经是家喻户晓了,其里面的链式编写,可以帮助我们简化代码逻辑,提高代码阅读性。一直流行这么一句话,作为一个程序猿要学会“偷懒”,RxJava大大的提升了开发效率,和降低了后期的维护成本。不得不令人垂涎它的“魅力”。 于是,走上了学习Rxjava之路,为什么一来就用Rxjava2.0而不是最初的RxJava开始说起,原因其实是小弟之前有接触过

2017-05-18 19:05:53 1071

原创 Android 6.0后的权限问题

Android 6.0后权限的动态申请1、做蓝牙开发时遇到一个问题,在安卓6.0系统中运行时,发现蓝牙搜索后并没有显示任何的设备信息,然后去查了下资料,发现在6.0以后的需要添加下面两个权限。 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:

2016-09-30 18:08:51 888

原创 Android中进程间的通信之Messenger

Android中进程间的通信之Messenger谈到android中的IPC机制,很多人都会先想到AIDL,这里要讲的是Messenger ,利用Messenger 可以简单的实现进程间的通信。通过发送消息到handler,它是基于消息的跨进程通信。 1、先写一个服务端MessageService,并且在新开启一个进程,在onBind()中通过Hmessage对象获取binder.package

2016-09-28 15:52:01 702

原创 android 实现自由移动的悬浮按钮

android 实现自由移动的悬浮按钮实现原理 主要是通过android中的WindowManager中的addview()把view加载进来,设置WindowManager.LayoutParams windowManagerParams的相关属性,例如x,y;在view的onTouchEvent中改变x,y从而实现悬浮按钮的自由移动1、自定义一个类FloatView继承自ImageViewpu

2016-09-22 10:50:57 7458 5

原创 android蓝牙和串口模块的通信

android蓝牙和串口模块的通信 最近一段时间研究了下android端和蓝牙串口模块间的通信,废话不多说,直接屡一屡思路和撸代码手机端蓝牙的搜索和串口模块间的配对最后就是数据的传输了蓝牙的搜索1、通过广播方式接收蓝牙的搜索结果,注册相应的广播 IntentFilter filter = new IntentFilter();filter.addAction(BluetoothDevic

2016-09-21 16:52:08 1579

空空如也

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

TA关注的人

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