自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BingshuYang的博客

一个正在修炼的书生

  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 Vsync事件分发主要过程

创建两个EventThread线程,一个属于SF,一个属于Choreographer,并运行创建DisSyncThread线程并运行两个EventThread初始化时会添加一个Connection,并且把自己注册给DisSyncThread的mListenners,也就是所谓的观察者模式当有信号VSync来的时候,经过HWC到SF到DisSyncThread,DisSyncThread分发...

2018-03-08 20:17:16 556

原创 Android应用进程和SurfaceFlinger的关系

首先一个Android进程会在连接SF服务的时候在SF中创建一个Client对象,Client对象和Android进程一一对应。1中创建Client对象是一个Binder实体,会在进程连接SF返回给Android进程。这样Android通过Binder代理可以向SF发送请求,例如创建Surface每个进程都会通过Client的Binder代理向SF申请一块匿名共享内存ShareClient...

2018-03-08 17:42:43 445

原创 Android贯穿两层的消息机制(Looper)

Android同一进程中线程的消息传递使用的主要方法就是MessageQueue+Message+Handle+Looper,该方法贯穿Native层和Java层,Java层的实现对于Android工程师来说较为容易理解,Native层由于设计到epoll等linux相关内容较难理解,下面将从MessageQueue的角度理解Native层的消息机制。 各个类的角色: java层: * ...

2018-03-05 15:26:41 250

原创 Input流程简述

InputManagerService:system_server中的binder实体,其实只是native层的代理InputManger:native层真正处理事件的类,持有InputReader和InputDispatcherEventHub:硬件驱动读取到事件并将事件信息写入到设备节点,EventHub负责从设备节点读取事件InputReader:持有InputReaderThrea...

2018-03-04 19:38:51 393

原创 Activity启动流程

Activity调用startActivity主要是当前进程和AMS之间的交互,如果需要创建新进程则还需要AMS通过Socket通讯方式向Zygote请求创建新进程。 1. 当前进程通过Binder告诉AMS让它开始为启动Activity做准备,同时将当前进程的ActiviyThread传递给Activity,ActivityThread是一个Binder实体,AMS用它实现和当前进程的直接通讯...

2018-03-04 11:25:35 193

原创 Android常见内存泄漏

内存泄漏的基本原因还是因为不使用的对象仍然可达,Android中常出现的就是Activity对象,只要切断Activity的引用或者Activiy退出时切断带有Activity引用的对象都可以避免。Context内存泄漏如果Context对象是Activity,当Activity退出后,其他类仍然保存有该Context,则会内存泄漏,因此这种情况使用getApplicationCont...

2018-03-04 10:52:15 232

原创 Java与线程

线程实现内核线程 内核线程由操作系统调度需要进入内核态,程序一般不直接使用内核线程而是使用内核线程的高级接口——轻量级进程,也就是通常意义上说的线程,内核线程系统调度频繁,资源消耗较大。为1对1模型用户线程 用户线程由进程独立调度,操作系统无法感知,实现比较复杂,但是资源消耗少。1对多模型用户线程加轻量级进程混合实现 一个轻量级进程可以映射多个用户线程,集合内核线程和用户线程两者的优点,

2018-03-01 16:52:11 149

原创 Java内存模型

Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和内存访问的差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果,注意这里的模型指的是概念模型。主存内与工作内存主内存:JVM中存储变量(局部变量和方法参数除外)的内存区域 工作内存:线程私有的内存,保存了被该线程使用到的变量的主内存副本拷贝 Java内存模型定义了8种操作,它们是原子的: - lock:给变量上锁

2018-03-01 16:06:54 187

原创 JVM内存划分及GC

java内存模型程序计数器:程序执行到的位置虚拟机栈:虚拟机栈是线程私有的,描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于记录存储局部变量表、操作数栈、动态链接、方法出口等信息。 局部变量表:一组变量值存储空间,用于存放方法参数和方法内局部变量,以变量槽为基本单位(Slot),在非静态上下文中,局部变量表的0索引位置是当前变量,也就是this指针,然后是方法参数

2018-03-01 09:20:47 249

原创 JVM类加载机制

1.类的加载时机类加载过程: 加载-验证-准备-解析-初始化-使用-卸载 验证-准备-解析 通常称为连接阶段虚拟机规范并没有规定class文件的类加载时机,但是严格规定了初始化的时机,而初始化之前一定要进行加载-验证-准备,解析则可以在初始化之前也可以在初始化之后。虚拟机规范规定了五种“当且仅当”的情况使类初始化(详细见Page210),需要注意的是数组对象只是创建了一个自动生成的类,不会

2018-02-28 17:05:32 148

原创 [Binder机制]众多Service启动流程-java层Service(一)

上一篇文章中讲述了大管家servicemanager的启动流程,其中servicemanager多次与binder驱动交互,最终由于读取不到service们发送的命令而挂起进程。本篇文章将以一个service启动为例,分析service启动的流程,以便大家更好的理解binder机制中各个角色的交互关系。

2017-05-12 20:08:49 576

原创 [Binder机制]大管家ServiceManager启动流程

[Binder机制]大管家ServiceManager启动流程  Binder机制作为android系统IPC(Inter-Process Communication,进程间通信)的主要方式,理解Binder机制至关重要。首先简要介绍IPC的个人理解。IPC的概念是随进程产生而产生的,在操作系统相关知识中,进程代表资源管理单位,每个进程享有独立的内存空间,两个不同的进程之间不能直接互相访问内存

2017-04-26 19:09:05 604

Machine_Learning_for_High-Speed_Corner_Detection

FAST特征点论文,FAST paper,Machine_Learning_for_High-Speed_Corner_Detection

2018-06-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除