8 ChuckChenLw

尚未进行身份认证

Read the fucking source code

等级
TA的排名 4w+

Android事件分发与消费

之前写过一篇Android事件分发机制详解,感觉比较乱,这里再总结一下。网上已经有很多前辈分析过源码,大家可以参考,我这里尽量不做过多的源码分析,仅仅从流程上分析。  0x01基础部分    事件分发和消费我们主要涉及到以下三个方法:    dispatchTouchEvent():分发事件  onInterceptTouchEvent():拦截事件  onTouchE

2017-03-31 11:21:56

自己动手生成Android Apk

本文仅做学习使用,比较简单,没有实际项目复杂。  掌握Apk生成的过程,对于我们是非常重要的。而该过程平时都是由IDE自动帮我们完成的。IDE可以给我们带来很大的便利,但是也是一把双刃剑,有时候会让我们忽视一些重要的实现步骤。所以我们在使用IDE自动编译打包Apk时,也应该知道Apk是怎么一步步由我们项目中的java文件,资源文件等变成我们所熟知的Apk的。不管使用什么IDE,Android

2017-03-07 10:26:13

Android开发中的代理模式

上一篇文章Android开发中单例模式写法与可能遇到的坑讲到了单例模式的一般写法,本篇继续总结一下Android(Java)中比较常用的代理模式。和单例模式一样,代理模式也是经常使用到的,使用过Spring的小伙伴,应该比较清楚,其AOP代理就默认使用JDK自带动态代理来生成代理类的。在Android中很多基于Binder机制的系统服务如ActivityManagerService、自己定义的AID

2017-01-22 15:10:06

Android开发中单例模式写法与可能遇到的坑

年底了,手上的活不是很多,就想着将平时记录的笔记总结一下。准备总结一下平时常常使用的设计模式。本篇就是比较常用的单例(Singleton)模式。  不管是Android开发还是Java开发,相信单例模式都是用的比较多的,平时再用的时候有没有想过,到底有多少种写法,或者有么有什么坑没有踩呢?带着这些问题我们先来了解一下什么情况下会用到单例模式。  一般在希望系统中特定类只存在一个实例时,就可以

2017-01-19 09:13:16

Android 抢红包

最近有要实现微信抢红包的需求,用的AccessibilityService实现,其实网上已经很多这方面的教程,本文纯粹是为了自己记录一下,也是纯粹的学习目的!  实现自动抢红包的原理,是借助Android的辅助服务AccessibilityService,这个服务是Android为部分使用者更方便的与手机交互。该服务的功能很强大,我们就通过抢红包来学习它吧。  第一步在AndroidMani

2017-01-17 16:39:12

Android Frameworks系列(二) 彻底弄懂startActivity

在AndroidFrameworks系列(一)startService启动一文中我们介绍了startService启动的过程,和startService一样,startActivity也是以ActivityManagerService为核心工作的。原理也差不多,不过要比startService复杂,因为Activity的生命周期更多,并且还涉及UI方面的工作。为了分析包括zygote孵化目标进

2017-01-13 14:47:35

Gradle for Android系列之五 多渠道打包

我们知道,很多的app需要发布在不同的应用商店中,但是各应用商店对上架的要求有时候又不相同,也就意味着我们需要针对不同的渠道,构建不同的渠道包,如果手动做这些事情,会比较繁琐,那么使用Gradle会方便很多!本篇在前文的基础上介绍一下使用gradle多渠道打包。  今天的内容基本上都是在app目录对应的build.gradle的android方法中设置的。主要是用到了gradle的Android

2017-01-11 09:25:54

Gradle for Android系列之四 依赖包管理

在GradleforAndroid系列之二build.gradle文件中已经初步介绍过依赖包。为什么我们这里还要在专门介绍呢,因为我们在项目中往往需要用到各种依赖方式,对我们来说很重要。掌握Gradle依赖包管理,可以让我们事半功倍。  接下来我们就直接开始介绍了    仓库  仓库是平时引用第三方库时使用最多的方式,非常的方便,往往都是通过一句话compile来引用。仓库又

2017-01-07 17:09:11

Gradle for Android系列之三 tasks

在之前第一篇文章中说过,Gradle最重要的概念是project和tasks,而一个Project也可以说只是包含了多个task的容器,所以在gradle中tasks的重要性不言而喻了。为了更好的介绍Android中常用的tasks,先来介绍task的基本知识。  我们可以在app的build.gradle文件中定义两个简单task分别hello,hello1:  taskhello<<{

2017-01-07 15:06:55

Gradle for Android系列之二 build.gradle文件

上一篇结合Android项目大致的介绍了一下Gradle在Android中的应用。其中也多次提到了build.gradle。但是没有详细的介绍其的基本结构和其作用。那么本文就将围绕这些展开。在这之前先看看Android中的Gradle脚本也哪些  Android项目中的Gradle脚本  一般情况下,使用AndroidStudio创建的Android项目会默认产生3个Gradle脚本:

2017-01-07 12:48:50

Gradle for Android系列之一 Gradle基础

project和task  project和task是Gradle中最重要的两个概念。每一次构建,都至少包括一个project,每一个项目又包括至少一个task。相信大家都对AndroidStudio生成的项目结构已经很熟悉了。一般情况下,在项目的root的目录下会有一个build.gradle文件,这个文件就是代表的一个project,这个文件可以使得新增模块,或者共用插件变得简单一些。然

2017-01-06 16:04:05

手把手教你在JCenter发布开源库

当你自己造好了轮子,想让其他人也能方便的使用到,就好像其他开源库一样,在AndroidStudio中一句话引用:  dependencies{compile'chuck.WheelItemView:library:1.0.1'}  这其实不是很难,只需要将你的项目上传Maven,然后发布到JCenter就可以了。  准备自己的项目  首先准备好自己的项目,上传至github

2017-01-05 11:49:58

Android省市区三级联动控件

最近有需求需要实现省市区三级联动,但是发现之前的实现不够灵活,自己做了一些优化。为了方便以后使用,抽离出来放在了github上WheelView。同时把其核心库放在了JCenter中了,可以直接引用。也可以参考项目中的Demo进行引用  下面介绍一下如何使用  如果用的是AndroidStudio那么直接在build.gradle文件中添加依赖:  dependencies{

2017-01-05 07:50:21

Android Frameworks系列(一) startService启动

之前写过一篇从AIDL看Android跨进程通信从Java层次去分析AIDL运行的原理,当时主要是为了学习Binder机制而写的,但是Binder机制比较复杂,打算过段时间单独的写一篇来分析。本篇文章分析startService的启动过程,也会涉及到使用Binder机制来进行跨进程通信,但是不会分析Binder机制的细节。不过还是强烈建议大家学习Binder机制,至少要了解Binder的基本架构

2016-12-13 19:44:14

Macbook Pro下载并编译Android源码并导入Android Studio

最近尝试下载并编译Android的源码,过程比较曲折,所以特别的记录一下。  环境  mac系统:OSXEICaptian10.11.6  Android源码:Android7.0  JDK:jdk1.8.0_77    下载源码  step1:因为我的mac硬盘空间比较小,所以我直接在移动硬盘上操作的,如果mac的空间够大也可以在内置硬盘操作。由于mac文

2016-11-22 09:52:35

RxJava(RxAndroid)线程切换机制

自从项目中使用RxJava以来,可以很方便的切换线程。至于是怎么实现的,一直没有深入的研究过!本篇文章就是分析RxJava的线程模型。  RxJava基本使用  先上一个平时使用RxJava切换线程的例子:  Observableobservable=Observable.create(newObservable.OnSubscribe<String>(){

2016-09-14 16:07:26

从AIDL看Android跨进程通信

AIDL是Android实现IPC的一种重要的方式,理解它的原理对理解Android进程间通信有很大的帮助。AIDL的定义,已经有很多介绍的文章了,这里就不做详解了。我们直接从实例入手来分析AIDL实现原理。  AIDL的使用  首先需要定义AIDL接口IMyService.aidl:  //IMyService.aidlpackagecom.chuck.aidldemo;//D

2016-07-23 17:31:26

RxJava操作符之Transforming Observables

在RxJava操作符之CreatingObservables我们学会了怎么创建Observable,但是我们项目中往往会遇到很多复杂的情况,需要我们对数据进行过滤和转化,以得到我们想要的结果。这篇文章我们主要是学习怎么转化数据:  Buffer  FlatMap  GroupBy  Map  Scan  Window  以上几个操作符就是专门用来处理数据转化功

2016-07-09 12:12:43

RxJava操作符之Creating Observables

RxJava是一个在Java虚拟机上实现的响应式扩展库:提供了基于observable序列实现的异步调用及基于事件编程。它扩展了观察者模式,支持数据、事件序列并允许你合并序列,无需关心底层的线程处理、同步、线程安全、并发数据结构和非阻塞I/O处理。  官网定义:RxJavaisaJavaVMimplementationofReactiveExtensions:alibra

2016-06-23 13:37:04

Retrofit2源码解析

最近项目将网络框架换成Retrofit2.0.2,文中说的Retrofit都是指的Retrofit2这里要说明一下,毕竟和Retrofit1差别还是蛮大的,结合Okhttp,RxJava还是比较好用的,网上有很多前辈介绍过使用方法,本文是想研究一下Retrofit的源码。关于Retrofit的介绍可以查阅Retrofit的官方网站  直接进入主题:(注本文是结合RxJava介绍的,最好可以了解

2016-06-20 17:27:37

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!