自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一口仨馍

拥抱改变,勇往直前。

原创 Android6.0Framework源码解析系列[目录]

看前人在很久以前就达到我现在远远不及的高度,这让我觉得有些无力。也正是他们趟过的坑能指引我即将前进的路。所以我很庆幸。我庆幸有人指引,我庆幸我在前进。本着向大牛学习以及知其然知其所以然的精神,准备有目的、系统性的Read The Fucking Source Code。既当作自己的笔记,也希望可以...

2016-08-10 18:46:44 7861 5

原创 Kotlin 一种以服务为基础的APP架构及源码示例

前言 由于工作原因,可能会被调到隔壁组。此架构为隔壁组leader设计,并不是我原创,已取得leader同意,此博文只分享我对此架构的理解。特此声明。 最近看了下Kotlin的一些语法,外加隔壁组采用非常规MVC/MVP/MVVM开发,所以写此Demo,一是为了练习Kotlin语法,二...

2018-05-07 10:57:35 1926 2

原创 Android 【插件化】"偷梁换柱"的高手-VirtualApk源码解析

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 关于VirtualApk 工程介绍 初始化 : PluginManager.getInstance(base).init() hook Instrumentation and H hook IActivityMa...

2018-04-12 14:28:30 2530 3

原创 Java 注解及注解处理器概述

元注解 @Documented 注解是否将包含在JavaDoc中 @Inherited 被注解类的子类是否会注解 @Retention 注解保留位置 @Target 注解的范围 @Retention注解value属性的取值范围为枚举类RetentionPolicy的三个枚举值,SOURCE...

2018-01-18 17:36:05 507 0

原创 Java 并发基础学习

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。 三个基础概念 原子性。一个操作或者一系列骚操作,要么全部执行要么全部不执行。数据库中的“事物”就是个典型的院子操作。 可见性。当一个线程修改了共享属性的值,其它线程能立刻看到共享属性值的更改。举个例子:由于JMM(Jav...

2018-01-09 14:28:19 777 7

原创 Andorid 换肤框架AndSkin源码解析及优缺点

AndSkin简介及使用教程AndSkin gaybug: https://github.com/RrtoyewxXu/andSkinAndSkin 作者写的说明: http://blog.csdn.net/zhi184816/article/details/53436761AndSkin源码解析...

2017-10-19 15:50:00 4761 12

原创 Android 顶级视图DecorView的前世今生

在Activity的启动过程中会执行ActivityThread#performLaunchActivity方法,其中调用Activity#attach。在attach()方法中实例化Activity持有的mWindow属性为Window的唯一实现类PhoneWindow。

2017-04-27 15:06:07 7508 0

原创 Android xUtils3源码解析之数据库模块

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 xUtil3支持数据库多库的配置,使用不同的DaoConfig,可以创建多个.db文件,每个.db文件彼此独立。 由于xUtils3设计的是在需要使用数据库的时候,才创建数据表。所以下文以save操作为例,跟进初始化数据表的过程。...

2017-04-01 15:10:32 4442 0

原创 Android xUtils3源码解析之注解模块

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 真正的初始化是在这里。实际上这里称作“初始化”有些不太合适,因为xUtils3中View注解都是`@Retention(RetentionPolicy.RUNTIME)`类型的,运行时才是真正的初始化,

2017-04-01 15:09:16 4573 1

原创 Android xUtils3源码解析之图片模块

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 xUtils3源码解析之图片模块,图片加载所需要的一切,都在这里~

2017-03-30 09:43:54 3712 2

原创 Android xUtils3源码解析之网络模块

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 xUtils3四大模块:网络请求、图片加载、ORM框架和事件注解。本文阅读分析网络请求相关代码。 使用版本:`compile 'org.xutils:xutils:3.3.36'`

2017-03-28 09:17:57 5686 4

原创 Android 从源码的角度带你完全解析AsyncTask

AsyncTask()解析 public AsyncTask() { mWorker = new WorkerRunnable<Params, Result>() { public Result call() throws Exceptio...

2017-01-19 10:53:04 1201 1

原创 Android QA专用,Python实现不一样的多渠道打包工具

相对于美团打包方案,我为什么要写这个工具?除了Gradle的多渠道打包,目前最流行的应该是美团(美团Android自动化之旅—生成渠道包、美团Android自动化之旅—适配渠道包、Walle)使用Python直接添加渠道文件的打包方式了,速度真是杠杠的!但是,这里有一个问题:需要一个已签名无渠道号...

2017-01-17 10:50:09 1329 2

翻译 Android package属性、package name和Application ID三者的联系及区别

名词解释 package属性:在AndroidManifest.xml文件中。 package name:应用程序的包名。 Application ID:模块defaultConfig块下的applicationId属性。 设置Application ID每个Android应用程序都有唯一一个类似...

2016-12-27 15:51:43 27090 6

原创 Python 模拟登录某SDN并解析返回数据

流程**三步**走: 1. 打开登录页,获取`cookie`和验证信息(正则匹配的`lt`、`execution`和`_eventId`)。 2. 模拟点击登录按钮,这一步需要构造登录表单完整数据,而且要加上`User-Agent`。 3. 验证通过之后,就可以打开各种页面了~

2016-12-20 10:01:37 1732 0

原创 Android JNI之Java和C互相调用

概述JNI是什么JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。NDK是什么NDK是Native Dev...

2016-11-15 14:56:22 3584 1

原创 Android 使用WindowManager实现悬浮窗及源码解析

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。 一个Activity、一个Service和两个布局文件。布局十分简单,这里就不贴了,大概描述下。activity_main.xml中俩按钮,layout_window.xml中一个TextView。ok,首先看下MainActivity。...

2016-10-24 09:18:08 11486 20

原创 Android Activity启动流程源码解析

在 Android Launcher启动应用程序流程源码解析一文中从点击应用程序图标startActivity()开始,一直讲解到Application和MainActivity的onCreate()方法被调用。中间流程有些高能,高能部分是两篇博文共有的地方,没办法绕开。本文主要讲述从Activi...

2016-10-14 15:20:21 3306 0

原创 Android 手把手带你玩转自定义相机

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。 概述相机几乎是每个APP都要用到的功能,万一老板让你定制相机方不方?反正我是有点方。关于相机的两天奋斗总结免费送给你。

2016-10-12 11:21:58 14996 42

原创 Android APP必备高级功能,消息推送之MQTT

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。 1. Android端实现消息推送的几种方式 轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。 拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短...

2016-10-10 09:15:24 43305 60

原创 Android 高级自定义Toast及源码解析

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 Toast概述Toast的作用不需要和用户交互的提示框。更多参见官网:https://developer.android.com/guide/topics/ui/notifiers/toasts.html Toast的简单使用

2016-10-08 09:27:41 7012 7

原创 Android XML布局文件解析过程源码解析

`mLayoutInflater.inflate(layoutResID, mContentParent)`。这行代码的作用是将我们的activity_main.xml填充到mContentParent中去。详见:[setContentView源码解析]。那么,这行代码怎么就将xml文件转换成了V...

2016-08-22 09:47:52 5807 1

原创 Android setContentView()源码解析

前言 在Activity中一般第一句就是调用setContentView(R.layout.XXX),但这其中系统做了那些工作? 我们知道,在ClassLoader装载了MainActivity之后,首先创建了Application,之后依次调用Application对象的onAttach和o...

2016-08-22 09:05:00 2513 0

原创 Android Launcher启动应用程序流程源码解析

带着问题看源码 点击桌面Launcher图标后做了哪些工作? 应用程序什么时候被创建的? Application和MainActivity的onCreate()方法什么时候被调用的? 概述在Android系统中,启动四大组件中的任何一个都可以启动应用程序。但绝大部分时候我们是通过点击Launche...

2016-08-15 13:19:06 4992 3

原创 Android SystemServer启动流程源码解析

简介Android系统中各个进程的先后顺序为: init进程 –-> Zygote进程 –> SystemServer进程 –>应用进程 其中Zygote进程由init进程启动,SystemServer进程和应用进程由Zygote进程启动。本文依据6.0源码,主要分析System...

2016-08-08 09:27:52 3361 9

原创 Android Zygote启动流程源码解析

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。 Zygote进程是Android和Java世界的开创者。在Android系统中,所有的应用进程和SystemServer进程都是由Zygote进程fork而来。其重要性由此可见一斑。虽然Zygote进程相当于Android系统的根进程,但...

2016-07-29 08:57:38 5035 8

原创 Android EventBus3.0使用及源码解析

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 # EventBus3.0简介 `EventBus`是greenrobot出品的一个用于Android中事件发布/订阅的库。以前传递对象可能通过接口、广播、文件等等,尤其像同一个`Activity`两个`Fragment`之间采用...

2016-07-10 18:49:00 7147 0

原创 Android LinearLayout实现下拉刷新

效果图实现思路一般刷新给ListView设置addHeaderView,这里我们可以模仿着这种方式实现可刷新的LinearLayout。然而LinearLayout并没有提供addHeaderView方法,既然不提供那么我们自己addView添加第一个View为我们下拉刷新的布局不就成了嘛。这里将...

2016-06-24 13:49:46 2872 0

原创 Android 内存泄露简介、典型情景及检测解决

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 什么是内存泄露?Android虚拟机的垃圾回收采用的是根搜索算法。GC会从根节点(GC Roots)开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收掉。内存泄漏指的是进程...

2016-04-27 15:36:35 7429 2

原创 Android 代码混淆实战

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。什么是代码混淆?Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有...

2016-04-25 17:40:04 3538 0

原创 Android MVC、MVP和MVVP的概念、运用及区别

MVC、MVP和MVVM都是为了解决界面呈现和逻辑代码分离而出现的模式。经典的MVC模式是M-V-X模式的老祖宗,MVP和MVVM都是在MVC的基础上演化而来。本文分为三个部分: 1. 概述MVC、MVP和MVVM的概念、区别、以及适用场景。 2. 用Demo演示MVP及MVVM的使用 3. D...

2016-04-15 13:44:47 19956 2

原创 Android 初探Retrofit2.0.1(最新版)

概述看见这段开头,你应该听过Retrofit的大名但是没有真正的运用过,或者用过Retrofit1.9但是没有跟上更新的进度。无论什么原因,你都该好好了解下这篇博客。1.9和2.0.1版本差别很大。网上相关的教程很少,又因为是初探,所以本篇博客会用一个Demo说明Retrofit2.0.1的用法,...

2016-04-09 23:29:17 3179 1

原创 Android RxJava/RxAndroid结合Retrofit使用

概述RxJava是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。更重要的是:使用RxJava在代码逻辑上会非常简洁明了,尤其是在复杂的逻辑上。告别迷之缩进。RxAndroid是RxJava针对Android平台的拓展。Retrofit是一个封装了okHttp的工具库,...

2016-04-07 19:52:30 11675 7

原创 Android 自定义View高级特效,神奇的贝塞尔曲线

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。效果图效果图中我们实现了一个简单的随手指滑动的二阶贝塞尔曲线,还有一个复杂点的,穿越所有已知点的贝塞尔曲线。学会使用贝塞尔曲线后可以实现例如QQ红点滑动删除啦,360动态球啦,bulabula~什么是贝塞尔曲线? 贝赛尔曲线(B...

2016-03-31 15:52:16 11205 9

原创 Android AndFix热补丁动态修复框架使用教程

简介已经上线的项目发现BUG,紧急修复BUG发布新版本?No,也许你需要AndFix。AndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。Andfix 是 “Android hot-fix” 的缩写。支持 Android 2.3 - 6.0...

2016-03-25 17:23:23 5874 2

原创 Android 百度鹰眼轨迹SDK(v2.1.6)

闲聊看过《鹰眼追击》这部电影的读者一定对“鹰眼”这台巨无霸计算机印象深刻,现在我们可以实现自己的鹰眼。效果图本篇为百度地图SDK第三篇博文第一篇实现:Android 百度地图周边雷达(v3.7.0)及覆盖物第二篇实现:Android 百度定位SDK(v3.7.0)结合方向传感器本博文为第三篇使用百...

2016-03-22 17:57:27 9159 5

原创 Android 百度定位SDK(v6.1.3)结合方向传感器

概述这是第二篇关于百度地图SDK的博客。推荐阅读: Android 百度地图周边雷达(v6.1.3)Android 百度鹰眼轨迹SDK(v2.1.6)今天主要写百度地图定位和方向传感器结合这么一个中间块案例。流程 申请密钥及相关配置请看:http://lbsyun.baidu.com/index...

2016-03-22 11:06:32 4225 1

原创 Android 百度地图周边雷达(v6.1.3)及覆盖物

闲聊百度地图SDK 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS...

2016-03-21 16:24:07 5106 1

原创 Android 左滑or右滑抽屉菜单

概述本篇只是个示例,理解本篇博客后,可实现左侧滑动菜单、左右两侧滑动菜单。再加上各种缩放,平移特效。DuangDuang的。本篇效果如下: 实现步骤 因为需要水平滑动,所以继承HorizontalScrollView 本Domo分为两个部分mMainLayout和mRightLayout。在on...

2016-03-18 15:36:31 4459 7

原创 Android 四种线程池

为什么要使用线程池 当同时并发多个网络线程时,引入线程池技术会极大地提高APP的性能。 显著减少了创建线程的数目。 防止内存过度消耗。控制活动线程的数量,防止并发线程过多。 使用条件:假设在一台APP完成一项任务的时间为T T1 创建线程的时间 T2 在线程中执行任务的时间,包括线程间同步所需...

2016-03-16 16:51:38 13384 1

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