自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

潇风寒月

if it can be done,in less than two minutes,do it now!

原创 Android-skin-support 换肤原理全面解析

一.背景 二.AppCompatActivity实现 三.Android创建View全过程解析 四.换肤原理详细解析 1.上文预备知识与换肤的关系 2.源码一,创建控件全过程 3. 源码二,从皮肤包加载皮肤 4.简单总结一下原理(本文精髓) 一.背景 公司业务上需要用...

2018-07-27 20:32:36 3499 6

原创 从源码角度彻底搞懂String、StringBuffer、StringBuilder

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 从源码角度彻底分析三者底层实现.第一次写源码分析,小记一笔,由于本人才疏学浅,有很多地方可能存在误解和不足,还望大家在评论区批评指正. 一、引言 学Java很久了,一直处于使用API+查API的状态,不了解原理,久...

2018-04-20 15:38:54 1010 1

原创 反编译基础知识
原力计划

!!! 严正声明 本文相关反编译技术仅限于技术研究使用,不能用于非法目的,否则后果自负. 1. apktool 逆向APK文件的工具 官方网站 apktool主要用于逆向apk文件,可以将资源解码,并在修改之后可以重新构建它们.它还可以用来重新构建apk. 1.1 功能 将资源解码成近乎原始的形...

2020-06-29 18:55:47 560 0

原创 JNI NDK入门详解
原力计划

Android开发中,由于各种原因(跨平台,高性能,敏感数据处理等),这时候需要用到大家耳熟能详的JNI(Java Native Interface).本篇文章将带大家复习一下JNI中那些常用的知识点.所以本文中没有一些基本环境配置的讲解,如果需要的话,可以先阅读一下我之前写的: JNI初识 H...

2020-06-14 00:20:06 258 0

原创 第一行代码读书笔记 Kotlin Android
原力计划

郭神的Android第一行代码更新了,听到消息的我立马就下单了,拿到书就开始如饥似渴地翻阅着.写的特别棒,学到了很多东西,下面是一些我不太熟悉的东西. 开源项目如下: 天气应用 https://github.com/xfhy/SunnyWeather 请求权限的库 https://github...

2020-05-07 17:34:59 136 0

原创 一个Android菜鸟入门Flutter 笔记(二)

1. 网络编程与JSON解析 默认的HttpClient请求网络 get() async { //创建网络调用示例,设置通用请求行为(超时时间) var httpClient = HttpClient(); httpClient.idleTimeout = Duration(se...

2020-04-30 09:29:18 244 0

原创 一个Android菜鸟入门Flutter 笔记(一)

1. Dart 基础语法 1.1 hello world 先来看个hello world,入口依然是main方法. printInteger(int a) { print('Hello world, this is $a.'); } main() { var num...

2020-04-30 09:26:03 225 0

原创 开源一个Flutter版WanAndroid客户端
原力计划

1. 前言 项目地址: https://github.com/xfhy/WanAndroid-Flutter 前段时间抽了点业余时间学了点Flutter入门,打算写个简单项目练练手.说实话,只有真正动手写东西才能真正切身感受到Flutter的魅力,刚开始学的时候写布局特别难受,各种嵌套,很烦....

2020-04-11 14:24:59 372 4

原创 2019年终总结

今年对我来说发生了很多大事,在技术上自认为也进步不少 2019 首先是完成了人生的其中2件大事 年初的时候首先是阅读了Android Jetpack中三大块(Lifecycle,ViewModel,LiveData)的源码,积累成自己的知识. 接着我把Android开发艺术探索又重新阅读了一遍,...

2019-12-31 12:33:04 163 0

原创 Gradle系列(四) Gradle插件

1. 前言 依赖apply plugin: 'com.android.application'就是依赖了安卓的应用程序插件.然后这个插件里面有android扩展,在官方文档里面有详细描述.但是,有时候不得不自己写一个插件,方便与业务开展.比如我觉得美团的热修复,在每个方法前面插...

2019-12-22 21:43:05 152 0

原创 Gradle系列(三) Gradle配置构建和渠道包

1. 前言 Android开发,打包的时候可能会打内测包,外侧包,release包等,还有就是有时候还需要打不同渠道的包等.这时它们里面的包名,应用图标,应用名称,某些资源文件,某些java文件等可能不同,如果通过人工去手动改,改了之后再打包的话,那就太麻烦了.现在有了Gradle,它可以帮到我们...

2019-12-12 21:27:54 125 2

原创 Gradle系列(二) Gradle执行顺序和task

0. 前情提示 这是一个gradle系列,尽量从前往后阅读.已完成文章: Gradle系列(一) Groovy 基础 1. 什么是gradle 维基百科:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目...

2019-12-01 15:37:43 221 2

原创 Gradle系列(一) Groovy 基础

文章目录1. 前言2. 什么是Groovy3. 简单使用Groovy4. 语法4.1 简单示范4.2 String4.3 闭包4.4 List4.5 Map4.6 IO4.7 类5. 总结 1. 前言 准备写一个新的系列,专注于Gradle,计划会有如下几篇文章 Groovy 基础 Gradle...

2019-11-30 21:24:36 170 0

原创 死磕Android_Glide主流程观赏

文章目录1. 前言2. 阅读前准备3. with()4. load()5. into()6. 总结 1. 前言 首先,LPL赛区S9再度夺冠,让我们恭喜FPX凤凰涅槃! 好长好长一段时间没有写博客了,中间经历了很多很多事. 比较庆幸的是找到了一份满意的工作.现在工作空闲之余,又可以写写博客归纳总结...

2019-11-20 23:10:45 515 0

原创 2019 Android开发工程师面经

文章目录1. Java基础1.1 什么是乐观锁?1.2 volatile关键字1.3 hashmap 原理,红黑树是什么?1.4 jvm内存分配1.5 String,StringBuffer,StringBuilder 区别2. 安卓基础2.1 安卓各版本大变化(Android 6.0到10.0有...

2019-11-07 22:28:30 632 6

原创 死磕Android_Retrofit 原理解析

文章目录1. 基本使用2. 构建Retrofit3. 获取网络请求参数3.1 构建interface实例3.2 ServiceMethod 获取入参4. 请求网络5. 总结 Retrofit,一个远近闻名的网络框架,它是由Square公司开源的.Square公司,是我们的老熟人了,很多框架都是他开...

2019-07-27 00:09:37 211 0

原创 死磕Android_OkHttp3 原理探究

1. 前言 Okhttp3 俨然已成为Android的主流网络请求开源框架,它的设计非常巧妙,而且非常灵活,功能强大.它有如下默认特性: 支持HTTP/2,允许所有同一个主机地址的请求共享同一个Socket连接 连接池减少请求延时 透明的GZIP压缩减少响应数据的大小 缓存响应内容,避免一些完全...

2019-07-22 22:42:52 665 0

原创 veridex 使用教程_扫描非法API调用

1. 限制非SDK接口背景 从Android P开始,谷歌就开始限制开发者,禁止反射调用系统的一些方法,特别是谷歌给出的黑名单里面的方法.当然,这是为了提升开发者体验和增强APP稳定,更是为了安卓的生态发展. 那些官方限制的都是一些非SDK接口,就是一些private的或者是hide的方法或字段,...

2019-06-28 22:27:06 933 0

原创 死磕Android_ContentProvider 启动

先给出一个需要注意的点:ContentProvider的onCreate方法比Application的onCreate方法先执行. 下面会给出为什么. ContentProvider相对于其他组件来说,用得稍微少一些.很少有APP需要向其他应用提供数据,保护自己的数据都来不及呢.当然,除了一些大厂...

2019-06-20 22:27:52 244 0

原创 死磕Android_BroadcastReceiver 工作过程

建议阅读本文之前先阅读死磕Android_Service启动流程分析(一),因为有些内容是一致的,方便融合. 早期的时候,广播的特性被各种流氓APP利用.好多好多流氓APP监听比如打电话,收发短信,有些流氓APP甚至直接拦截短信,当然那个年代早已是过去式了,应该是4.4以前吧,反正以前那会儿挺乱的...

2019-06-19 23:06:01 138 0

原创 死磕Android_Service绑定流程分析(二)

通过startService只能是把Service给启动起来,但是我们无法与其建立联系.通过bindService方式启动Service的话,不仅能启动Service,还能与其建立连接,相互调用比较方便.今天我们来理一理bindService其中的原理. 建议先看一下如下两篇文章,我按照顺序来写的...

2019-06-15 23:16:14 166 0

原创 死磕Android_Service启动流程分析(一)

我这里将启动Service流程分为两章来写,startService和bindService分别分析. 这篇文章是分析startService过程的源码分析过程.其实startService和Activity的启动很类似,好多地方都差不多.如果之前还没有看过或者不太理解Activity的启动的同学...

2019-06-13 23:28:23 182 0

原创 死磕Android_AOSP编译过程

一直有个小心愿,想要了解以及调试Android源码。为了实现这个目标,我经历了种种坎坷,花了一个多周才搞定了。最近家里的电脑一直没怎么关机,一直在给我跑AOSP。公司最近在天天加班,所以一天只有一次试错的机会,出错了只能晚上回来继续解决问题。源码实在是太大了,我这个Android P的代码刚下载下...

2019-06-12 23:00:59 367 0

原创 死磕Android_App 启动过程(含 Activity 启动过程)

文章目录1. 前言1.1 简单介绍一下主要的类2. 应用的启动过程2.1 Launcher简介2.2 启动应用源码分析3. 启动Activity3.1 启动进程3.2 启动主线程3.3 创建Application3.4 创建Activity参考 1. 前言 Activity是日常开发中最常用的组件...

2019-05-29 22:02:54 1604 2

原创 死磕Android_Handler机制你需要知道的一切

文章目录1. 前言2. ThreadLocal工作原理2.1 ThreadLocal demo2.2 ThreadLocal源码理解3. MessageQueue 消息队列3.1 消息队列插入3.2 消息队列查询(next)4. Looper4.1 Looper初始化4.2 Looper#loop...

2019-05-19 21:05:10 1635 2

原创 死磕Android_View工作原理你需要知道的一切

平时在开发安卓的过程中,View是我们用的非常非常多的东西.用户所看到的一切关于UI的,都是通过View绘制出来展示到屏幕上的.大多数情况下我们仅仅了解基本控件的使用方法,我们是无法做出非常复杂炫酷的自定义View的.我们需要掌握View的工作原理:测量、布局、绘制流程,掌握了这几个基本的流程我们...

2019-05-16 19:47:11 1452 4

原创 无需编译源码,在Android Studio中轻松调试Android源码

本文由 简悦 SimpRead 转码, 原文地址 https://juejin.im/post/5cdcc1435188250d8b2df346 昨天我才发现, 原来在 Android Studio 中可以很轻松得调试 Android 源码 0. 准备工作 在 Android Studio ...

2019-05-16 09:51:07 204 1

原创 Android View事件体系

1.View基础知识 getX()/getY()返回的是相对于当前View左上角的x和y坐标,而getRawX()/getRawY()返回的是相对于手机屏幕左上角的x和y坐标. TouchSlop: TouchSlop是系统所能识别出的被认为是滑动的最小距离,这是一个常量,和设备有关.可以通过如...

2019-05-08 22:34:33 130 0

原创 看书笔记_View的工作原理

复习刚哥的安卓开发艺术探索,又有了新的感受 文章目录初识ViewRoot和DecorViewMeasureSpecView的工作流程自定义View 初识ViewRoot和DecorView measure->layout->draw View的三大流程是通过ViewRoot来完成的...

2019-04-28 08:08:22 125 0

原创 Android IPC机制

本文不扯其他的,就总结Android IPC机制,下面是IPC几乎所有知识的集合. 概念 进程间通信方式 进程与线程区别 1. 进程是资源分配的最小单位, 线程是程序执行的最小单位 2. 进程有自己独立的地址空间, 线程没有, 线程使用相同的地址空间共享数据 3. CPU 切换一个线程比...

2019-04-19 22:00:18 110 0

原创 LiveData 使用及原理解析

本文是基于 androidx.lifecycle:lifecycle-extensions:2.0.0 的源码进行分析 LiveData是一个类,将数据放在它里面我们可以观察数据的变化.但是它是江湖上那些妖艳贱货不一样的是它是lifecycle-aware(生命周期感知的).这个特性非常重要,我们...

2019-03-21 22:48:14 1240 0

原创 ViewModel 使用及原理解析

本文是基于 androidx.lifecycle:lifecycle-extensions:2.0.0 的源码进行分析 ViewModel旨在以生命周期意识的方式存储和管理用户界面相关的数据,它可以用来管理Activity和Fragment中的数据.还可以拿来处理Fragment与Fragment...

2019-03-21 00:00:25 6576 1

原创 Lifecycle 使用及原理解析 一文搞懂

Lifecycle是Android Architecture Components的一员,这玩意儿挺方便的,它是能感知Activity和Fragment的生命周期的. 一、使用Lifecycle 1. 引入Lifecycle 我们来看一下如何引入: 非androidX项目引入: //运行时 i...

2019-03-13 23:14:55 2131 0

原创 Android Studio 在默认build.gradle 中加入 maven 阿里云源

众所周知,某些时候引入某些开源库是非常慢的.引入阿里云源之后,会下载非常快. 添加成默认的 找到Android Studio 安装目录,我如下: D:\install\android-studio\plugins\android\lib\templates\gradle-projects\New...

2019-03-12 22:05:24 3078 0

原创 Intent传大量数据导致的崩溃问题

项目中一个地方,需要传递一个很大很大的列表数据(model也特别复杂,盛放的数据量也很大),大到什么程度呢?直接导致跳转Activity时用Intent传值 APP崩溃了. 崩溃Exception: TransactionTooLargeException 其实用Intent传值,是有一个最大的...

2019-03-05 21:52:38 464 0

原创 2018年度总结

恍恍惚惚,一转眼,2018又过去了.这一年感觉成长还是看得见的.简单总结一下 2018历程 3月份左右在做毕业设计,一直搞到5月份.APP和后台代码都是我写的. 学习了Spring Boot,为了写一个简单的后台. 今年比较自豪的是,投稿了几次郭霖大佬的公众号,还有鸿洋大佬的也投成功过.感觉...

2018-12-29 13:12:46 298 2

原创 Constraintlayout全解析

平时使用ConstraintLayout,断断续续的,基本都是在自己的小demo里面使用.公司的项目暂时还没有使用.这次公司项目需要大改,我决定用上这个nice的布局.减少嵌套(之前的老代码,实在是嵌套得太深了…无力吐槽). 首先,ConstraintLayout是一个新的布局,它是直接继承自...

2018-12-08 22:43:41 339 1

原创 Github常见标签生成教程

经常在Github逛,肯定经常看到如下高逼样的标签.让项目平添几分姿色. 今天我们来试着自己也做一个. 打开那些项目的markdown文件,发现这些图片是img.shields.io帮我们生成的. ![image](https://img.shields.io/badge/api-%2B19-...

2018-10-26 09:40:34 1017 0

原创 android.app.Fragment已过时

今天早上使用Fragment时,忽然发现,android.app.Fragment已经过时了… /** * @deprecated Use the <a href="{@docRoot}tools/extras/support-library.html"&a...

2018-10-19 09:20:59 7189 3

原创 Android View事件分发机制

作为程序猿,最不想 看的但是也不得不去看的就是源码!所谓知其然也要知其所以然,神秘的大佬曾经说过进阶的方法就是READ THE FUCKING CODE! 认识MotionEvent 负责集中处理所有类型设备的输入事件.我们对屏幕的点击,滑动,抬起等一系的动作都是由一个一个MotionEven...

2018-10-18 11:09:17 308 0

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