最新文章

Kotlin 函数与函数式编程

自从Google爸爸宣布Kotlin为自己的干儿子之后,Kotlin被各大社区炒的火热。 如果你对Kotlin语法一无所知,推荐先阅读官方文档或者中文站(https://www.kotlincn.net/docs/reference/)之后再看这篇文章会有更深刻的理解。本篇文章主要介绍Kotlin函数的用法,以及自己对函数式编程的一些理解。并且会和Pytho […]

理解 JNI 技术

JNI 即Java native interface,,是一种技术,提供了丰富的接口,可以在Java层调用native代码,也可以在native层调用Java代码,native代码一般是指C/C++程序。JNI就像是一座桥,连通着Java与native。阅读Android源代码的时候可以发现其用了大量的JNI技术,如果要深入学习Android了解JNI技术是 […]

深入理解 MessageQueue

Android 中有两个非常重要的知识点,分别是Binder机制和Handler机制。前者用于跨进程通讯,并且通过 ServiceManager 给上层应用提供了大量的服务,而后者用于进程内部通讯,以消息队列的形式驱动应用的运行。之前的文章已经多次分析了Binder相关的内容,复杂程度远高于Handler,之后还会继续分析Binder。说到Handler,做 […]

深入理解 ServiceManager

ServiceManager是安卓中一个重要的类,用于管理所有的系统服务,维护着系统服务和客户端的binder通信。 对此陌生的可以先看系统服务与ServiceManager来了解应用层是如何使用ServiceManager的。 我们可以通过 ServiceManager.getService(String name)来获取服务,返回的是一个Binder对象 […]

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. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果。 锁可重入意味着获取锁的操作的粒度是线程而不是调 […]