小文字 吃饭,睡觉,溜狗头


OkHttp【四】任务调度Dispatcher

前言 在发起HTTP请求后,OkHttp在RealCall封装的相关逻辑内执行了请求发起动作,而负责记录和调度Call的则是Dispatcher。 本文一起分析OkHttpClient#Dispatcher的相关实现。 /** * Policy on when async requests are executed. * * <p>Each dispatcher uses an {@link ExecutorService} to run calls internally.... 更多


获取进程名的几种方式

背景 获取Android指定pid的进程名该怎么操作?如果你曾经遇到过类似需求一定知道有多种办法,那么这些获取进程名的方法速度上有什么差异么?用那种方式最合适呢? 本文存粹为了对比集中获取进程的方式,做一个简单分析。 0x1 ActivityManager 第一种通过系统的ActivityManager来获取当前运行的所有进程,通过遍历比较pid来找出目标进程名。 private String processNameFromAMS(int pid) { String proce... 更多


Janus 二元神漏洞测试

背景 12月9号,Andorid对外曝光了一个名为Janus的重量级系统漏洞CVE-2017-13156), 由安全研究公司Guard Square发现。 Janus原意是神话中的二元身,用于描述这个漏洞还真是贴切。 整个漏洞其实建立在文件校验规则之上: 一个文件即是APK,又是DEX,在安装APK和执行阶段的校验规则差异,导致可以在APK头部附加一个恶意DEX来欺骗系统 下面我们从市场上随意下载一个apk来做测试。 测试APK 本文涉及的测试APK,只用于单击研究之用... 更多


OkHttp【三】Call/RealCall源码分析

前言 在OkHttpClient实例化一个请求时,我们使用了newCall方法来构造一个Call对象,并执行。 本文一起分析Call的相关实现逻辑。 /** * Prepares the {@code request} to be executed at some point in the future. */ @Override public Call newCall(Request request) { return RealCall.newRealCall(this, requ... 更多


OkHttp【二】OkHttpClient 源码分析

背景 回顾一下,在最简单的GET请求场景中,我们的程序都做了那些事情? 在不考虑个性化配置的情况下,我们只需三步: 我们首先实例化了一个OkHttpClient,如果有多个请求需要发送,这个类将会做一个单例来复用; 同时我们会构造一个Request实例,用于传入我们的请求参数; 最后通过OkHttpCLient实例,new出一个Call, 并执行(或者丢入异步队列)。 OkHttpClient client = new OkHttpClient(); String ru... 更多