自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

破磬

慢慢地,耐心地,一步一步地学。总结+记录+进步

  • 博客(112)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android MessageQueue源码分析

MessageQueue是Android消息机制的核心,熟悉MessageQueue能够帮助我们更清楚详细地理解Android的消息机制。这篇文章会介绍MessageQueue消息的插入(enqueueMessage)和读取(next),native层的消息机制,以及IdleHandler和SyncBarrier的逻辑原理。源码是基于6.0。

2016-10-17 00:27:53 3560 2

原创 为什么Activity生命周期函数是运行在UI线程

这是我自己给自己提的问题,或者说是Activity的生命周期函数是怎样运行在主线程的?下面简单分析一下,讨论的问题其实远远不止于这个问题。会涉及到进程的启动,Binder的线程池,ActivityThread中的消息处理。

2016-08-19 00:20:31 1996

原创 AppWidget源码分析(2)---updateAppWidget过程分析.md

前面一篇文章,分析了AppWidgetProvider和RemoteView的源码,从中我们可以知道它们的实现原理,AppWidgetProvider是一个BroadcastReceiver,所以它是通过广播接收通知的,收到更新通知后,AppWidgetProvider需要去提供View供远程进程显示。这篇文章分析这个传输过程,分析updateAppWidget方法。

2016-08-13 01:41:00 5144 1

原创 AppWidget源码分析(1)---接口类

最近项目中接触到AppWidget,相对来说这部分比较简单,所以趁着空余时间详细阅读了AppWidget的源码。这篇文章主要是从源码上分析AppWidget中API类的相关原理,相关类的简单功能介绍和实现原理。关于使用,建议看指导文档。

2016-08-09 23:15:35 2381

原创 Android Accessibility使用及事件流程简介

Accessibility是Android从API 4开始提供的一个功能,它主要目的是帮助一些因为有视觉,听觉,身体障碍而无法完全使用触摸屏或铃声等的用户来使用Android的。而实际上现在很多开发者都用它来实现一些其他功能了,比如说微信抢红包,自动安装APK,强制停止应用等。下面来简单介绍一下它的相关使用以及原理

2016-08-04 23:25:07 10879 1

原创 Android SharedPreferences源码分析

我们经常使用SharedPreferences保存一些简单的数据,比如Settings的数据。如果我们只是简单的使用,可能没什么问题,但是如果要用好它还是得明白它的实现方式,下面来从源码上来分析下SharedPreferences的缓存,异步读写实现,多线程,多进程访问。

2016-07-18 23:53:35 4458

原创 Android Bitmap深入介绍(二)--- 优化技术

这一篇主要介绍Bitmap相关的一些优化技术,包括加载图片,图片内存管理,图片缓存。

2016-06-13 15:14:02 4826

原创 Android源码适配器模式---Activity类结构

其实适配器模式在Android源码中非常多,而从整体的源码角度上来看Activity的结构就是一种适配器模式。从这个角度上面看Activity,对Activity和应用层框架会有更加深入的理解。

2016-06-13 10:35:16 3892

原创 Hugo源码分析

Hugo是JakeWharton大神开发的一个通过注解触发的Debug日志库。它是一个非常好的AOP框架,在Debug模式下,Hugo利用aspectj库来进行切面编程,插入日志代码。通过分析Hugo的代码能够对gradle以及aspectj有一个非常好的了解。

2016-11-05 22:41:54 4416

原创 Android源码访问者模式---HtmlDocument

访问者模式是设计模式中相对比较复杂的设计模式,在Android源码中的UnifiedEmail项目中的HtmlDocument就使用了访问者模式,Email中的内容可以是Html文档,而Html文档需要解析保存,HtmlDocument就是html节点的一个容器,本文将介绍HtmlDocument与访问者模式(源码基于6.0.1_r30)。

2016-06-23 23:16:03 1330

原创 Android Bitmap深入介绍(三)--- 开源加载框架简述

目前使用非常广泛的框架技术主要有Android Universal Image Loader,Picasso, Glide和Fresco,最开始出现的应该算是UIL(Universal Image Loader),记得刚开始用图片加载框架的时候,主要就是使用UIL,UIL功能丰富。Picasso是Square搞出来的,Glide与Picasso比较类似,Google推荐Glide,Fresco是Facebook推出的

2016-06-19 21:14:42 2801

原创 Android Bitmap深入介绍(一)---基础

在Android应用开发中,我们经常需要跟图片打交道,而图片一个很麻烦的问题是占用内存非常大,经常导致OOM,了解Bitmap相关信息,不同sdk版本中Android图片处理的变化,以及一些优化处理的方式对我们平时开发中对图片的会非常有帮助。这篇先介绍Bitmap基础内容,关于像素,存储信息,以及加载。

2016-06-08 00:31:17 27154 1

原创 Android4.0 Bitmap Parcel传输源码分析

很久之前就看到有网友遇到用Parcel传Bitmap的时候,会遇到因为图片太大而报错,都在讨论传输Bitmap的时候的大小限制,但是实际上应该只有在4.0之前会有限制,4.0之后图片传输采用了Blob来传输,最终会使用ashmem来传递占用内存大的数据。下面分别介绍4.0前后Parcel对图片传输的异同。

2016-05-29 11:32:06 2727

原创 Android6.0 Bitmap存储以及Parcel传输源码分析

如果想要对Android Bitmap进行更多的操作,理解好Bitmap的实现将会有非常大的帮助,另外Android在6.0中增加了asm存储图片。这篇文章就通过源码来分析Android6.0中的Bitmap。本文主要分析Java层与native层的Bitmap,以及Bitmap的储存和Parcel传输。源码基于6.0,所以会有一些新的特性。

2016-05-24 14:55:54 9419 3

原创 Xposed源码阅读小结

最近借助着邓凡平的这篇文章深入理解Android(三):Xposed详解去阅读了一下Xposed的Hook源码,在这里总结一下Xposed使用的一些东西。

2016-05-20 20:16:23 1109

原创 FutureTask源码分析

FutureTask是JDK1.6新增的内容,间接实现了Future, Runnable接口。前面已经介绍过了Future的get方法会阻塞在那,等待执行完成,获取结果,那么FutureTask是怎么实现这一功能的呢?LockSupport是用来创建锁及其他同步类的基本线程阻塞元素,它的park和 unpark能够分别阻塞线程和解除线程阻塞。

2016-05-19 14:14:23 2553 1

原创 Callable, Future和FutureTask简述

JDK1.5后新增了一些接口用于并发编程的接口,Callable,Future。以及1.6添加了FutureTask。之前看到了他们的使用,JDK1.8还添加了CompletableFuture,一直想了解一下这些东西。这里记录下对Callable, Future和FutureTask的学习。

2016-05-16 15:47:15 911

原创 关于Android事件派发流程的理解

以前看了很多人介绍的Android事件派发流程,但最近使用那些来写代码的时候出现了不少错误。所以回顾一下整个流程,简单介绍从手触摸屏幕开始到事件在View树派发,从源码上分析ViewGroup.dispatchTouchEvent。

2016-05-12 20:04:15 6237 1

原创 关于Android MVP模式的思考

最近经常看到各种介绍MVP模式的博客的,以前写的项目基本都是不断重构项目,直接考虑模块化,重用,精简,将项目代码变得更加精简,提高代码之间的复用性。看了MVP模式后,感觉有很多地方可以优化的,决定去总结一下自己代码中的问题并优化,算是对自己之前写的代码的回顾。好的模式能够让人在阅读的时候能够很好地理解代码,在对程序进行修改的时候能够快速简洁,并且不对原有代码结构破坏。

2016-05-05 11:18:23 2602

原创 Android Binder跨进程与非跨进程的传输异同源码分析

网上很多文章都介绍了Service的绑定过程,但是并没有介绍对于跨进程与非跨进程,对于不同的返回值,其具体有什么区别,以及具体是怎么实现的。这篇文章就根据源码分析Android究竟是在哪部分来控制跨进程与非跨进程Binder的传输的,Binder究竟是怎么传输的。

2016-04-30 17:08:34 8513

原创 Android源码桥梁模式---FragmentCompat

FragmentCompat是一个用于访问Fragment特征的帮助类,它在support v13开始以一种向后兼容的风格提出。它是如何向后兼容的呢?就是使用桥梁模式来向后兼容。它是一种简化了的桥梁模式,下面将简单介绍FragmentCompat与桥梁模式。

2016-04-26 19:45:31 4074

原创 平时看的优质技术博客与网站

经常看的一些优质的技术网站,博客,论坛

2016-04-25 20:58:16 794

原创 Android源码代理模式---Binder

Binder是Android的进程间通信核心,如果看过Android源码,你会发现源码中Android的各种核心服务都是通过Binder机制进行相互通信的。在Binder的client部分就是通过代理模式来访问Server端的。这里想通过代理模式来详细介绍Java层Binder(源码基于6.0.1)。文中会简单介绍代理模式,详细介绍Binder机制。代理模式意图对其他对象提供一种代理以控制对这个对象的访问。

2016-04-23 11:35:31 4879

原创 Android源码抽象工厂---IPolicy

在Android源码中,这个IPolicy就是一个简单的抽象工厂模式。它负责创建Winodw,WindowManagerPolicy, LayoutInflater,FallbackEventHandler。抽象工厂意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。下面分析一下IPolicy及其实现,以及创建的相关对象

2016-04-19 11:45:29 3146

原创 Android源码装饰模式---ContextWrapper

如果说Android源码中哪个地方装饰模式应用的最明显的话,那肯定是非ContextWrapper莫属了,ContextWrapper是一个透明的经典的装饰模式。本文将通过装饰器模式分析Context源码结构。本文基于的Android源码是(android 5.0.0)。首先先介绍一下装饰模式。装饰模式意图装饰模式动态地给对象添加额外的职责,就添加功能来说,它比子类的方式更加灵活。

2016-04-14 16:39:51 14442 2

原创 Http keep-alive 与Tcp keep-alive

前两天面试遇到一个问题:如果让你对一个项目通信协议进行选择的话,你会选择Http还是Tcp(当时问的是套接字,其实套接字还有UDP啦,我好像也没去讲)协议?感觉当时脑子转的不太灵活。而且以为Http keep-alive与Tcp keep-alive是差不多的,所以根本没去讲两者之间的keep-alive。每次面试回答问题都有点着急,所以思考不够。实际上两者是不同的,下面分别介绍一下。

2016-03-31 17:01:50 1929

原创 Java方法签名与JNI,反射

http://blog.houzhi.me/2016/03/19/java-signature-reflect-jni在这段时间写东西,必须要先吐槽一下找实习的杯具。找个实习不容易,没经验,各种跪。一直都觉得在Java反射中,那些反射的方法调用都很有规律,每一个调用都需要相同的特性:函数对象(Method),函数参数,类对象。今天坐在电脑前又回忆了JNI的调用方式(C++调用Java),也需要相同的

2016-03-19 10:36:11 2665

原创 Retrofit源码解析

RetrofitRetrofit是Github上面squre组织开发的一个类型安全的Http客户端,它可以在Java和Android上面使用。Retrofit将描述请求的接口转换为对象,然后再由该对象去请求后台。Retrofit将请求对象化了。目前已经发布了2.0beta版本。

2016-03-03 18:12:26 992 2

原创 Otto与EventBus框架比较

最近这几天经常在空闲时间看到了AOP编程,其实也就是对面向事件过程编程,一开始一直很难理解这个名次。不过看到Android正好有面向事件编程,程序解藕的开源库(Otto,EventBus)。所以闲暇时间就去看了一下这两个库的源码,写篇博客记录一下。其实很多时候,沉下心去做一件事就好了,收获会伴随着的。用法首先从用法上面来说,两个框架的用法本质上其实是差不多的:注册(register),发布事件(po

2015-11-19 19:01:40 4567

原创 了解Java泛型

Java泛型是从JDK1.5开始引入的,它与C++的模版非常类似。但是Java的模版完全在编译的时候实现,使用一种擦除的技术在编译的时候就将模版完全替换,由编译器执行类型检查和推断,编译成普通的非泛型字节码。正因为如此,虽然Java泛型是Java类型安全的一大进步,但是使用起来的时候可能会遇到各种非常困扰的问题。Java泛型不协变在Java中,因为Number是Integer的父类,所以Intege

2015-11-04 14:43:29 741

原创 Java泛型Type体系

最近看开源代码,看到里面很多Java范型,并且通过反射去获取范型信息。如果说要看懂范型代码,那还是比较容易,但是如果要自己利用范型写成漂亮巧妙的框架,那必须对范型有足够的了解。所以这两三天就不在不断地看Java范型相关的东西。如果说想要明白通过反射去获取范型信息,那么Type体系是必须要了解的。Java从1.5开始引入范型,并且也引入了Type体系。首先给出Type的类型树UML图,以便有个整体的认

2015-11-03 15:11:43 6766 2

原创 Java注解简述

Java注解简述国庆假期前后,基本是看一下开源的项目,发现不少优秀的开源项目都用了注解和动态代理相关的知识,所以顺带有好好地研读了一下注解和动态代理,加深了对注解和动态代理的认识。博客都差不多接近要断了,前一段七七八八地看了各种东西,一直都没有写东西,懒惰了很多。整的现在很多东西都没有做好,突然觉得不仅仅是专业学习,其他的各种东西也应该有点追求。力求生活精致。Java从JDK5开始引入了注解(Ann

2015-10-21 15:13:33 730

原创 Java动态代理

Java动态代理最近发现很多项目都用到了动态代理,就又认真学习了下Java动态代理。代理模式应用在很多地方,但是如果在编码的时候就添加代理类,那整个代码就会变的非常冗余,繁琐。这样动态代理就应运而生了,动态代理的代理是在程序运行的时候动态生成的。动态代理只需要提供一组接口,以及被代理的对象,程序就会自动生成代理类,而且你还可以在运行方法的前后做一些自己需要的操作,甚至于不执行方法。下面介绍一个动态代

2015-10-21 15:12:15 697

原创 Java F-bounded

Java F-bounded上次在StackOverflow上面问了一个问题,下面这种模式有什么用处. abstract class Base<T extends Base<T>> { } class Variant<T extends Variant<T>> extends Base<T> { }我是在另外一个问题上面看到的这样的一段代码,一开始一直都不理解,后面看了那些回

2015-10-21 15:10:55 937 2

原创 java虚拟机Class格式与指令

前几天看《深入理解java虚拟机》中关于.class文件的详细解析,实际上Class文件里面就是包含着运行时候的指令,以及数据等内容。如果想要能够读懂Class文件,那一定需要对Class的文件结构以及Java虚拟机指令集有一定的了解JVM指令集java虚拟机也有自己的指令集(字节码指令集),指令占一个字节长度,也就是说JVM中的指令最多也就256个。一常用的指令如:iload,iadd,isub,

2015-09-10 21:09:16 1115

原创 Http协议

老早就学了Http协议,但是最开始学HTTP协议的时候,没有从内心意识到他的地位之高,它的使用范围之广。那时候学习的时候,基本时联系到平时使用的Apache Http包或者Java HttpUrlConnection来考虑了。更多地是在应用,或者说是比较,但是最近接触到的各种知识,像REST规范。以及使用的API各种接口。越来越觉得HTTP协议是简单但重要的东西。以前对HTTP协议,是从应用来考虑的

2015-09-10 20:01:07 568

原创 JVM内存管理

内存区域Java的内存区域主要包括虚拟机栈,本地方法栈,程序计数器,堆,方法区。虚拟机栈是对应于每个线程运行时候的东西,JVM会给每个线程分配一个栈,线程运行就是执行栈里面的东西。这个栈又包含了帧,帧对应着线程函数。栈里面只能够出帧和入帧,对应着每个函数的运行和运行完成。本地方法栈是每个线程native代码对应的部分。与虚拟机栈很相似,但是本地方法栈执行的是Java Native方法。程序计数器可以

2015-09-10 19:45:57 604 1

原创 子View按规则自动移动Layout

项目地址:https://github.com/xxxzhi/ChildAutoMovi-Layout之前看到一个屏幕上有点不断闪动的,并且移动的界面。当时久萌生一种想法,能不能做一个这样的选择界面呢?实现起来其实比较简单,写了一下之后,感觉完全可以做一个可以很好地重用,并且方便扩展移动规则的View。趁着平时时间,就干脆实现了它,并且粗略写了几种移动规则。ChildAutoMoviLayout实现

2015-06-21 12:22:32 1218

原创 Runtime.exec使用错误导致延迟

这篇文章是纪录了一个bug解决的过程,但是我还是没有能够真正地找出bug的缘由。希望大牛能够详细解释。问题的发现当接触的系统越来越大的时候,对于系统的性能越来越高的时候,找到表面问题的真正原因就慢慢地成为了一个比较麻烦的问题。说实话,一开始我一直不知道是因为Runtime.getRuntime().exec()导致服务处理时间缓慢。发现这个原因倒是花了不少时间。

2015-06-02 21:17:25 3422 3

原创 Android PagerAdapter notifyDatasetChanged

forget to call notifyDatasetChanged 错误这几天一直在完善之前自己的写的Android应用。想用ViewPager让之前界面能够滑动阅读。但是滑动过程中,经常会莫名其妙地遇到一个问题。莫名其妙地提示ViewPager expected 10 counts,but found 20. forget to call notifyDatasetChanged. 意思很明

2015-04-28 22:02:02 1369

ViewBitmapdemo

一个简单的demo

2013-05-02

ADT-8.0.0 eclipse

eclipse ADT-8.0.0 下载包

2011-10-03

空空如也

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

TA关注的人

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