11 binghaiwlf

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 32w+

C语言学习(二)

3.4 存储类auto 是局部变量的默认存储类, 限定变量只能在函数内部使用; register 代表了寄存器变量,不在内存中使用; static是全局变量的默认存储类,表示变量在程序生命周期内可见; extern 表示全局变量,即对程序内所有文件可见,类似于Java中的public关键 字;C 语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 从作用域看: 1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用 于所有的源文件。当然,其他不包含全局变量定义的源文件需要

2020-08-20 16:34:50

C语言学习(一)

1.工具安装使用的工具为eclipse + 编译工具MinGW641.1 Eclipse的安装参考网址为:https://baijiahao.baidu.com/s?id=1620193436856012646&wfr=spider&for=pc1.下载Eclipse下载地址为:https://www.eclipse.org/downloads/ 2.下载完成 后,选择安装。先需要先安装JDK1.83.JDK的下载路径为:http://download.ecli...

2020-08-20 14:57:26

Input输入系统(一)

输入事件系统框架Android事件输入系统主要负责键盘、触屏、鼠标等输入设备的事件输入及向焦点窗口和焦点视图的事件派发,插入,过滤,拦截等功能。Android支持的输入设备主要有:键盘、鼠标、触摸屏、轨迹球、游戏摇杆/手柄、绘图板等。Android系统中输入系统主要包括如下几部分:View,InputDispatcher,InputReader,EventHub ,kernel几部分,他们之间的关系如下:与其他模块的交互关系如下:Input系统启动流程Input在SystemSe

2020-07-16 10:00:47

事件处理/事件分发机制(一)

事件分发原理Android为触摸事件封装了一个类MotionEvent,其实OnTouchEvent的一个参数就是MotionEventMotionEvent中封装了触摸点坐标、点击事件类型等Android中的View可以放在一个ViewGroup中,这个ViewGroup又放在另一ViewGroup中等等,一层层嵌套起来,同一个触摸事件,View和父ViewGroup都想要处理,我们应该传给谁呢,此时就需要事件拦截机制MotionEvent中处理得事件类型为:注意:ACTION_MO.

2020-07-15 12:24:30

Surface创建(一)

1.Surface相关术语介绍1.1 SurfaceSurface 就是由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄,1)可以通过Surface获得原生缓冲器以及当中的内容。2)原生缓冲器(rawbuffer)是用于保存当前使用surface的像素数据的Surface是用来绘制图形或者图片的载体,在其中包含Canvas,获取canvas对象即可对其进行绘制。3)Surface中有一个Canvas成员,专门用于画图的。所以,Surface中的C

2020-07-16 15:25:26

Surface创建(二)

3.Surface创建总结surface的创建已经分析,从App点击启动一个MainActivity来介绍此流程3.1 APP/WMS/SurfaceFlinger通信流程创建App启动Main Activity: 首先创建好与WMS通信的媒介Session, 然后通过Session将Window加入到WMS中,这时会触发 SurfaceSession的创建 SurfaceSession的创建又会在WMS Native创建SurfaceComposerClient,

2020-07-16 15:33:34

WMS窗口大小计算(一)

本文以打开一个Activity后,到Activity显示后,如何确认各个窗口的大小和位置。不涉及到窗口中的每个view的布局的情况。一个Activity包含了一个PhoneWindow(window),一个Window代表一个窗口。 Activity并不负责视图控制,只是控制其生命周期和处理事件,真正控制视图的是Window。但Window的添加和显示又与生命周期息息相关。 在android系统中,一个window界面上出来Activity显示的界面外,至少还可能有如下的元素:...

2020-07-16 16:23:33

解决事件冲突(二)

事件冲突:本文主要分析的是listview

2020-07-18 13:10:34

计算窗口大小(二)

performTraversal调用relayoutWindow方法分析在performTraversal,会涉及到View的measure、layout、draw。其中measure用来对View进行测量,给出建议值,layout来确定子控件在父控件中的位置,包括真实大小以及坐标位置,draw负责将View绘制出来。单文只分析与窗口大小相关的逻辑,performTraversal方法会被多次调用到,这个方法是计算窗口大小的起点窗口区域Overscan(过扫描区):   Ov..

2020-07-16 17:07:37

WMS-relayoutwindow

6 relayoutWindowwms的relayoutWindow方法会在ViewRootImpl的performTraversals方法中会调用,其请求WMS来计算相关的窗口大小,创建Surface等等,就目前的理解performTraversals主要侧重于客户端对DecorView及其子View的measure,layout,draw等三大流程的处理;而binder call到system_server的WMS,是着重于系统侧对窗口的处...

2020-07-21 17:32:10

WMS-addWindow

2020-07-21 17:28:55

WMS窗口管理模式

4 WMS窗口管理模式在wms中对所有的窗口采取树状的形式管理,示意图如下:从8.0上,引入了WindowContainer 的概念,如上图所示,将Window通过树状的形式来管理下面的类对应的就是上图中的类DisplayContent extends WindowContainerRootWindowContainer extends WindowContainerTaskStack extends WindowContainerTask extends WindowCo.

2020-07-18 14:59:49

WMS初始化

3 WMS初始化 调用WindowManagerService的main方法来创建wms的实例,此方法执行在system_server线程中代码如下: 通过wms的构造函数中看到,wms主要涉及的功能如下图所示: 而在wms的初始化过程中主要涉及到如下三个线程,分别是”system_server”、”android.display”和”android.ui”,这三个线程的关系如下: AndroidO以下三个...

2020-07-18 14:57:44

Window窗口添加

5 Window窗口的添加WindowManager对Window进行管理,说到管理那就离不开对Window的添加、更新和删除的操作,在这里我们把它们统称为Window的操作。对于Window的操作,最终都是交由WMS来进行处理。窗口的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分。我们知道Window分为三大类,分别是:Application Window(应用程序窗口)、Sub Windwow(子窗口)和System Window(系统窗口),对于不同类型的窗

2020-07-21 17:26:07

WMS服务启动流程

2 WMS服务启动流程 wms(WindowManagerService)属于一种系统服务,类似的服务为AMS,PMS,IMS等,是在SystemServer中被启动。启动wms服务的流程如下: 2.1 Zygote启动systemserver 由结构图的得知,在ZygoteInit.java的forkSystemServer函数中启动了SyetemServer进程,代码如下:2.2 systemserver进程启动过程handleSystemSe...

2020-07-18 14:54:22

WMS总体框架

目录1 WMS总体架构........................................................................................ 32 WMS服务启动流程................................................................................ 53 WMS初始化................................................

2020-07-18 14:50:11

C语言基本知识(字符串和指针)

#include <stdio.h>#include <stdlib.h>#include <string.h>//输入字符串的方式:fget,定义一个字符串可以通过数组的方式int main1() { printf("输入一个字符串\n"); char str[11]; fgets(str,11,stdin); printf("str= %s\n",str);}运行的结果为:hello输入一个字符串str= hel...

2020-07-22 13:29:06

ViewPager和ListView的事件拦截

事件拦截分两步,内部和外部内部拦截法:package com.example.dispatch;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.viewpager.wi

2020-07-18 13:55:34

泛型作业

1.用Javac javap -c 反汇编后查看字节码 擦除机制super是如何处理源码:public class Genric { //private static Object Number;​ public static <T> T copy(Collection<? super T> dest, Collection<T> ...

2020-04-26 15:20:20

多线程的学习(wait and notify)

多线程:wait and notifyAll等待 和通知的标准范式:等待方:1.获取对象的锁2.检查条件,条件不满足wait3.条件满足,执行业务代码syc(对象) {while(条件不满足)对象.wait();}执行业务代码}通知方1.获取对象的锁2.修改条件3.通知等待方sync(对象) {执行业务代码,修改条件,对象.n...

2020-04-20 17:50:06

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。