摘要:
一、Handler机制与ThreadLocal 在Handler机制的时候,我们会接触到Looper中的一个很重要的类:ThreadLocal,ThreadLocal并不是线程,它的作用是可以在每个线程中存储数据。 Handler在创建的时候就会获取当前线程的Looper来构造消息循环系统,获取的方 阅读全文
摘要:
Binder是Android的进程间通信核心,Android的各种核心服务都是通过Binder机制进行相互通信的。熟悉Binder机制话就会知道,Binder的client部分就是通过代理模式来访问Server端的。本文我们就结合代理模式来详细讲解一下Java层Binder机制。 一、代理模式介绍 阅读全文
摘要:
一、跨进程通信方式 跨进程通信主要有以下几类:管道、Socket、共享内存、信号。 1. 管道 管道的特点是半双工&单向的,管道里面的数据只能往一个方向流动。一般情况下管道是在父子进程之间使用的。 2. socket socket的特点是全双工,即可读也可写。可以用在两个无亲缘关系的进程之间,但需要 阅读全文
摘要:
一、Handler Message 种类 Handler的Message种类分为3种: 普通消息 屏障消息 异步消息 其中普通消息又称为同步消息,屏障消息又称为同步屏障。 我们通常使用的都是普通消息,而屏障消息就是在消息队列中插入一个屏障,在屏障之后的所有普通消息都会被挡着,不能被处理。不过异步消息 阅读全文
摘要:
在深入系统的学习Handler的时候,我们接触到了Looper之所以死循环不会导致CPU使用率过高,是因为使用了Linux下的pipe和epoll机制。 Android的应用层通过Message.java实现队列,利用管道和epoll机制实现线程状态的管理,配合起来实现了Android主线程的消息队 阅读全文
摘要:
1. 启动方式的区别 系统服务启动:系统服务大部分跑在system server里,一般都是在system server里面启动的,在system server启动时顺便把服务都启动了如AMS,WMS,PMS都在system server里面。 private void run(){ ... sta 阅读全文
摘要:
1. Zygote是什么? Zygote是Android系统中的进程,由用户空间的第一个进程Init进程启动的,是Android系统运行的第一个AndroidRuntime进程,同时也是打通Native和Java的桥梁。 2. Zygote的作用? Zygote进程的作用主要有两个: 创建Syste 阅读全文
摘要:
一、‘非UI线程更新UI’问题探究 Android开发的时候非UI线程不能更新UI,这个是大家都知道的开发常识。但是当问到为什么?可能我们就会有些含糊了。 本文我们就针对这个问题进行探讨并进行一定的思维发散,来加深我们对Android界面刷新机制的理解。 1. UI线程的工作机制 主线程的工作机制可 阅读全文
摘要:
做Android开发的都应该知道Handler的运行机制,这个问题属于老生常谈了。 这里再简单赘述一下: Handler 负责发送消息; Looper 负责接收 Handler 发送的消息,并在合适的时间将消息回传给Handler; MessageQueue是一个存储消息的队列容器。 本文我们会详细 阅读全文
摘要:
问题说明: 一般在音视频开发中,我们会使用SurfaceView进行视频画面的展示。当场景中有多个SurfaceView的时候,会出现展示内容的堆叠覆盖,导致我们本想看到的内容被遮挡。 一、SurfaceView 简介 SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface 阅读全文