最新文章

Android Toast 原理分析

Android Toast 是我们日常开发中常用的View组件,下面分析一下Toast是如何运作的,开始之前先要知道所有的视图都是通过 WindowManager.addView(mView, mParams) 添加并显示到屏幕上的,这是一个IPC调用。对此有疑问的可以先翻看一下相关的文章。 使用篇: 使用还不简单,一行代码搞定: Toast.makeTex […]

系统服务与 ServiceManager

Android Binder 机制是安卓应用运行的基础,一个应用的运行需要无法避免地和系统提供的Binder做交互。Android 系统以服务(Service)的方式暴露出很多Binder对象,准确的说我们拿到的是Binder代理对象(BinderProxy),真正的Binder对象运行于安卓系统进程中(system_process)。我们的应用以夸进程的方 […]

Android IPC 机制

本文为《Android 开发艺术探索》 第二章IPC机制 笔记及实践 文章中涉及的代码:https://github.com/pqpo/ServiceAndIpcDemo  建议先clone一份到本地,运行起来之后再继续阅读。 其中项目中包括Service生命周期的部分不在本文 讨论范围之内,并且只演示了使用Binder进行进程间通讯,其他方式比较简单。 I […]

JVM 内存结构与内存溢出异常

本文为《深入理解Java虚拟机》读书笔记,加入了一些自己的见解。 Jvm内存溢出异常就是我们常说的OOM,即java.lang.OutOfMemoryError,当然还包括java.lang.StackOverflowError。 那么它和内存泄漏有什么区别与联系呢? 对于内存泄漏,维基百科的定义是:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已 […]

Tinker 接入及源码分析(三)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 上篇文章分析了加载补丁的源码,本篇文章会继续分析tinker […]

Tinker 接入及源码分析(二)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 上篇文章简单的介绍了Tinker的使用:《Tinker接入及 […]

Tinker 接入及源码分析(一)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 现在市面上有很多Android热修复框架,包括开源的,未开源 […]

《Java 并发编程实战》笔记

线程带来的风险: 1. 安全性问题(永远不发生糟糕的事,避免竞态条件) 2. 活跃性问题(某个正确的事情最终会发生,死锁,饥饿,死锁) 3. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果。 锁可重入意味着获取锁的操作的粒度是线程而不是调 […]

Android 单元测试实践

单元测试是什么 单元测试 是针对 程序的最小单元 来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。一个单元可能是单个程序、类、对象、方法等。 ——维基百科 为什么要做单元测试 卖个关子,看完文章自然就知道了 原来和很多人一样并没有写单元测试的习惯,写好一个功能模块之后直接在真机上做自测,看看刚写的功能是否和预期一致,如果不一致,从头debug找问 […]

当百度定位遇上 RxJava

在项目中引入RxJava之后,得益于RxJava的各种优势,比如线程切换,避免死亡式回调,方便的数据流处理等等,便希望将所有用到回调的地方都用RxJava重写一遍。一大批使用RxJava的开源项目如雨后春笋般应运而生,RxBinding,RxBus,RxLifecycle,RxActivityResult,RxCache… 原项目中使用百度定位作 […]

手牵手教你写 IntelliJ Idea 插件:MvpGenerator

上一篇文章写了:如何将原项目重构成MVP模式 实际使用中发现每次新建一个页面,都需要另外建三个类,分别是Contract,Model,Presenter,着实是一项枯燥无味的体力活。 当遇到这种事情的时候,最先想到的就是能不能写一段代码来做这件事。 上网一搜,果然已经有人做好了:Android Studio插件之MVPHelper,一键生成MVP代码,非常感 […]

如何将原项目重构成 MVP 模式

最近在做公司项目的重构工作,主要重构点包括: 网络请求框架由 HttpURLConnection + Handler 改为 Retrofit + OkHttp + RxJava 事件通知由 安卓广播 改为 RxBus 图片加载框架由 ImageLoader 改为 Glide 代码优化(瘦身,内存泄漏分析等) 将传统Activity作为God Object的M […]