Android开发
文章平均质量分 72
流星飘雨啊
这个作者很懒,什么都没留下…
展开
-
Android键盘弹出监听
import android.app.Activity;import android.graphics.Rect;import android.view.View;import android.view.ViewTreeObserver;/** * 用于监听键盘是否弹出,并获取键盘高度 * * @author zhangxiaowei */public class Keybo...原创 2018-08-10 11:31:10 · 2292 阅读 · 1 评论 -
android hook入门
本文hook以activity来讲解,运用Java反射以及代理。hook技术的难点在于hook到某个点,就是寻找在内存中“不变”的对象,那么静态修饰或者单例就是我们要hook的点,然后实现代理。所以根据这个想法,我们就来找Activity需要hook的点。一:我们先跟踪 startActivity源码第一步:@Overridepublic void startActivity(I...原创 2018-10-16 14:25:06 · 743 阅读 · 0 评论 -
Handler+MessageQueue+Looper+ThreadLocal+Thread详解
本文主要讲Handler+MessageQueue+Looper+ThreadLocal+Thread之间的逻辑关系,以及对源码的分析1:我们在每次创建Handler对象时,需要绑定Looper,而Looper对象在每个线程中只会存在一个,MessageQueue则是Looper对象中的全局变量。以下是逻辑图。2:为什么我们在主线程创建Handler对象却没有绑定Looper。以下是源码:...原创 2018-11-06 16:06:21 · 419 阅读 · 1 评论 -
ThreadPoolExecutor使用的三种缓存队列详解(ArrayBlockingQueue+LinkedBlockingQueue+SynchronousQueue)
在使用线程池(ThreadPoolExecutor)时会用到这三种队列。以下是通过对源码的分析来了解各队列的原理。池线程的介绍柯林斯参考深入理解的Java的线程池的ThreadPoolExecutor的三种缓存队列的作用都是存放可运行的,用于线程池获取并执行运行方法。当队列为空,则让线程处于等待状态,加入队列则唤醒等待的线程继续执行。都继承extends AbstractQueue<...原创 2018-11-29 18:12:23 · 8324 阅读 · 0 评论 -
深入理解Java并发锁ReetrantLock
我们平时在项目中遇到线程安全问题,大多使用同步来解决同步问题,同步是隐式锁,它的加锁与释放,无需我们关注,虚拟机会处理。而ReetrantLock的加锁与释放都需要我们手动处理。下面我们将从源码角度来分析ReetrantLock原理。若有不足,欢迎大家留言,以便及时改正。一:ReetrantLock实现了锁接口,以及三个内部类,Sync,FairSync(公平锁),NonfairSync(非公...原创 2018-11-28 11:32:48 · 676 阅读 · 0 评论 -
Android+Binder机制
本文主要从进程间大致通信原理来讲,能力有限,本着对学术认真负责的态度,如有偏差,欢迎留言纠正。在讲解Binder前先了解以下知识(1)IBinder 接口: 实现了该接口表示具有跨进程通信能力。Binder就实现了IBinder。(2)IInterface:通信的功能,就是AIDL中定义的接口。(3)ServiceManager 存储服务。(4)Binder驱动: 是通信...原创 2018-12-09 18:49:27 · 247 阅读 · 0 评论