自定义博客皮肤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)
  • 收藏
  • 关注

原创 Android消息机制(二)之 MessageQueue 与 Looper

前言  一张图让你了解消息机制怎么实现 线程间通信。   重温了Android艺术开发探索这本书的消息机制,写这篇文章加入了博主自己的一些理解,换了些角度,希望能帮助对Android消息机制还不太理解的朋友们。若文章有不正确的地方,欢迎讨论,欢迎指出。   Android的消息机制主要是指Handler的运行机制。Handler的运行需要底层的MessageQueue和Looper的支撑。...

2018-02-10 14:59:29 347

原创 Android消息机制(一)之 ThreadLocal

前言  今天重温了Android开发艺术探索上的消息机制,花了一些时间,书上写很好,但是可能文章一些先后顺序问题,不是特别好理解,这篇文章博主用了自己的理解,看源代码,结合书上的知识,希望大家能更容易理解。(可能会写的不太好。。。不正确的地方欢迎指出)   Android的消息机制主要是指Handler的运行机制。Handler的运行需要底层的MessageQueue和Looper的支撑。M...

2018-02-03 00:44:50 316

原创 Butterknife和 EventBus 使用apt冲突

今天在做小项目的时候突然发现删掉一些控件时编译出错了,控件已经删的干干净净,可是还是报错。 就在这个类编译时出错了,控件已经删了,但是这个类没有更新,导致找不到对应的控件,这个类是BufferKnife在编译时自动生成的类,所以想到是Butterknife编译注解时出错了。回想了一下是因为加入了EventBus框架之后的事,当时添加EventBus依赖时是跟着官网的说明在gradle文件中添

2018-01-31 20:00:46 992

原创 volatile关键字在单例模式中的应用

这几天在研究volatile关键字,有看书,上网找博客,本来看的还挺好的理解的,但是卡在了一个地方,就是单例模式中懒汉模式使用Double Check里面的volatile的作用原理弄糊涂了。不同地方有不同的说法,最后终于理清了。  关键字volatile可以说是Java虚拟机提供的最轻量的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都不习惯去使用,遇到需要处理多线程数据竞

2018-01-27 23:47:59 869 2

原创 内部类引用外部类的局部变量要用final修饰

为什么内部类引用外部类的局部变量时,此变量要用final修饰代码 public void test() { final int i = 3; runOnUiThread(new Runnable() { @Override public void run() { mTvShow.s

2018-01-25 20:09:59 1449

原创 Class类文件的结构

Class类文件就是java文件通过编译之后产生的文件,了解Class类文件的结构对Java虚拟机的学习是不可或缺的。它有助于我们对许多JVM的知识更方便理解,例如类加载机制、对象的创建、方法区区域的内容等会有更好的体会。注意:任意一个Class文件都对应着唯一一个类或接口的定义信息,但反过来说,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过类加载起直接生成)Class类

2018-01-24 23:58:24 212

原创 对象的创建及内存分布

下面简单总结一下对象的创建及其内存分布(以下只讨论普通Java对象,不包括数组和Class对象) 1.了解对象的内存分布对象内存分配在堆中(绝大部分普通Java对象,像Class对象是分配在方法区中的)对象开始的部分是对象头,包括两部分信息 第一部分是自身运行时数据,存放了跟对象有关的信息,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等第二部

2018-01-20 23:02:56 911

原创 Java的内存区域(堆、栈)

一提到Java的内存区域大家第一时间想到的可能就是堆和栈,堆用来存放对象,栈用来存储方法执行时的局部变量等。但是Java的内存并不只是分为这两块。比如说,类加载之后的类信息、常量、静态变量、即时编译器编译后的代码等数据,是存放在一个叫方法区的地方。运行时数据区域一个进程对应一个Java虚拟机,Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《J

2018-01-19 11:41:46 296

原创 final关键字简单总结

final关键字可用与修饰类、变量、方法final修饰变量时,表示该变量一旦获取了初始值就不可被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。 由于final变量获得初始值之后不能被重新赋值,因此final修饰成员变量和修饰局部变量时有一定的不同。final成员变量要点:非final成员变量在定义时不手动初始化,系统会自动默认初始化(

2018-01-14 23:34:41 201

原创 DataBinding框架简单使用

安卓开发的时候有些很些经常重复又麻烦的东西总是希望越简单越好,下面给出DataBinding框架一些简单的使用方法,解决两个小问题。总是findViewById 很烦?更新UI时将数据映射到各个View很麻烦?(特别是子线程中更新UI)简要介绍: 2015年谷歌I/O大会上介绍了一个框架DataBinding,DataBinding是一个数据绑定框架,以前我们在Activity里写很多的f

2018-01-12 15:36:58 402

原创 MySQL的并集、差集

MySQL的并集不支持 Intersect 关键字,所以要用其他方式去达到并集的效果。让我们看一下下面代码的效果,目的是查询既是计算机系而且不大于19岁的学生Select*from Student_zjz where Sdept='计算机系'IntersectSelect*from Student_zjz where Sage<=19; 结果如下: 是会出现语法错误的。所以我们要换一种方

2017-12-21 20:11:01 3318

原创 简单工厂模式

读书学习笔记~后面是自己一些总结简单工厂模式原理就是面向接口编程接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极好地降低各模块之间的耦合,从而提供系统的可扩展性和可维护性基于这种原则,很多软件架构设计理论都倡导“面向接口”编程,而不是面向实现类编程,希望通过面向接口编程来降低程序的耦合。有一个场景,假设程序中有个Computer类需要组合一个输出设备,现在有两个选择

2016-10-16 14:10:43 338

原创 构造器创建对象

构造器是创建对象的重要途径问题:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?答:不是的。构造器是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但是这个对象并不是完全由构造器负责创建的。实际上,当程序员调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了——这些操作

2016-07-19 10:25:48 3508 1

空空如也

空空如也

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

TA关注的人

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