自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

  • 博客(22)
  • 资源 (10)
  • 收藏
  • 关注

原创 Android GUI系统-ViewTree遍历过程(五)

ViewTree的遍历过程performTraversals。遍历过程主要对应三个函数performMeasure(计算大小),perforLayout(计算位置),performDraw(绘制内容)。具体看下这三个步骤执行的条件,及怎么执行的?1)performMeasureprivate void performTraversals() @ViewRootImpl.java{//mView是...

2017-12-28 21:25:17 453

原创 深入理解Java虚拟机-Java内存模型与线程(12)

深入理解Java虚拟机 学习笔记第十二章 java内存模型与线程在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。 12.2 硬件的效率与一致性由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统

2017-12-28 10:56:41 471

原创 Android GUI系统-ViewTree的遍历(四)

那些情况会引起ViewTree的遍历1)应用程序刚启动时,会在构造出整棵ViewTree后,执行第一次遍历。public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) @ViewRootImpl.java{ requestLayout();} public vo

2017-12-26 07:09:08 1002

原创 Android GUI系统-ViewTree的管理者(三)

作为ViewTree的管理者ViewRoot,是怎么工作的。一,ViewRootImpl跟WMS间的通信ViewRootImpl.java在构造的时候,需要建立跟WMS的通信的双向通道:ViewRootImpl –>WMS:IwindowSessionWMS →ViewRootImpl :IwindowIwindowSession和IWindow是匿名的BinderServer需要借助一定的...

2017-12-24 18:16:01 287

原创 Android GUI系统-ViewTree的创建(二)

View树的创建过程当AMS通知应用进程来启动一个Activity任务时,最终这个请求会转化为ActivityThread中的一个消息LAUNCH_ACTIVITY,同类型的消息还是RESUME_ACTIVITY,PAUSE_ACTIVITY等。主线程ActivityThread对这个LAUNCH_ACTIVITY消息的处理是整个ViewTree建立的起点。private class H exte...

2017-12-21 22:38:36 632

原创 深入理解Java虚拟机-虚拟机字节码执行引擎(八)

虚拟机字节码执行引擎    在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。但从外观上看起来,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。    8.2运行是的栈帧结构   ...

2017-12-21 17:31:27 1891

原创 Android GUI系统-View框架(一)

View框架相关元素的关系:1)View和ViewRoot,ViewRoot可以理解为View树的管理者,是ViewRootImpl类型的对象,Activity和ViewRoot是一对一的关系,他有一个成员变量mView,是View树的根,也就是xml布局的顶层元素,ViewRoot的核心任务是跟WMS通信。2)Activity和Window,Activity有一个成员变量mWindow就是Win...

2017-12-20 07:32:11 1566

原创 Android 7.1 GUI系统-窗口管理WMS-动画的执行(七)

前面只是动画资源的加载过程,下面看下动画是怎么执行起来的?前面在分析窗口申请的过程中,分析过relayoutWindow中的调用performSurfacePlacement,在这个函数的最后调用了mService.scheduleAnimationLocked(),来安排动画的执行。void scheduleAnimationLocked() @WindowManagerService.java...

2017-12-19 22:01:06 1328

原创 深入理解Java虚拟机-虚拟机类加载机制(四)

7.1概述      虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。      在java语言中,类型的加载、连接、初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载稍微增加一些性能开销,但是为java应用程序提供了高度的灵活性,java里天生可以动态扩展的语言特性就是依赖运行期动态...

2017-12-19 16:09:59 552

原创 Android 7.1 GUI系统-窗口管理WMS-窗口动画、应用动画的加载(六)

转载两篇矢量动画的文章,做个记录:矢量图形与矢量动画  https://blog.csdn.net/aqi00/article/details/54944816Android-矢量动画技巧  https://blog.csdn.net/z82367825/article/details/60574053窗口动画的加载:Activity窗口显示的过程中,除了窗口的申请,窗口大小的计算,窗口层级的设置...

2017-12-17 23:20:04 1565

原创 Android 7.1 GUI系统-窗口管理WMS-窗口大小计算(五)

窗口大小的计算一个应用窗口,除了应用程序本身的内容外,还有状态栏,可能还有输入法窗口,状态栏的大小是固定的,输入法窗口可以在AndroidManifest.xml中配置,相关属性如下:以state开头的表示当Activity成为焦点时软键盘是隐藏还是可见,以adjust开头的表示如何调整Activity窗口以容纳软键盘。frameworks/base/core/res/res/values/Att...

2017-12-16 22:44:01 2005

原创 深入理解Java虚拟机-垃圾收集器与内存分配策略(三)

深入理解Java虚拟机第二版学习笔记。垃圾收集器与内存分配策略       第二章java内存运行时区域的各个部分,启动程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本是类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或线

2017-12-14 19:42:16 713

原创 Android 7.1 GUI系统-窗口管理WMS-Surface管理(四)

Surface的管理Surface是窗口能真正显示到物理屏幕上的基础,由surfaceflinger管理,可以通过WindowStateAnimator.java中的变量mDrawState来查看每个窗口相关的surface的状态。surface有5中状态:WindowStateAnimator.java//Surface还没有创建。staticfinal int NO_SUR

2017-12-13 23:27:32 4214

原创 深入理解Java虚拟机-Java内存区域与内存溢出异常(二)

第二章 Java内存区域与内存溢出异常2.2 运行时数据区域       Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干不同的数据区域。2.2.1 程序计数器       程序计数器(program Counter Register)是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时是通过改变这个计数

2017-12-13 19:02:14 632

转载 Java RandomAccessFile用法

转:http://blog.csdn.net/akon_vm/article/details/7429245Java RandomAccessFile用法内存映射文件 MappedByteBuffer                               RandomAccessFileRandomA

2017-12-13 09:41:40 304

转载 Java Lambda表达式入门

   Java Lambda表达式入门原文链接: Start Using Java Lambda Expressions下载示例程序 Examples.zip 。原文日期: 2014年4月16日翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能...

2017-12-12 18:22:05 197

原创 深入理解Java虚拟机第二版学习笔记(一)

深入理解Java虚拟机第二版学习笔记。第一章,       走进Java。1.2 Java技术体系Sun官方定义的Java技术体系包括以下几个组成部分:Java程序设计语言;各种硬件平台上的Java虚拟机;Class文件格式;Java API类库;来自商业机构和开源社区的第三方Java类库。 通常把Java程序设计语言、Java虚拟机、Java API类库这

2017-12-12 18:09:26 1633 1

原创 Android 7.1 GUI系统-窗口管理WMS-窗口添加(三)

窗口的添加过程。Android中窗口通常分为两大类,一是系统窗口,一是应用窗口。添加的过程上,WMS不会特别区分这两类窗口,只是在权限和层级有差别。1)系统窗口的添加,以状态栏为例。private void addStatusBarWindow() @PhoneStatusBar.java{//把R.layout.super_status_bar资源inflate为View对象mStatusBa...

2017-12-11 22:44:26 879

原创 Android 7.1 GUI系统-窗口管理WMS-窗口属性(二)

窗口类型及属性。1),Android都有那些窗口类型,定义在WindowManager.java的内部类LayoutParams中。public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable @WindowManager.java{//代表通常的应用程序窗口的开始。 pu

2017-12-09 11:23:36 1081

原创 Android 7.1 GUI系统-窗口管理WindowManagerService(一)

一,WindowManagerService窗口管理员。什么是窗口?直观的看是一个界面,比如桌面,比如打开的一张照片。从SurfaceFlinger的角度看,它是一个layer,当向surfaceflinger申请一个surface时,实际是创建了一个layer,承载着跟窗口有关的数据。从WindowManagerService的角度看,它是windowState,管理着窗口有关的状态。Windo...

2017-12-06 22:08:38 1335

转载 Android sqlite数据库连接池连接异常分析

转:http://bbs.51cto.com/thread-1113117-1.html Android sqlite数据库连接池连接异常分析1. 在android开发过程中,突然碰到了这个错误,数据库连接分配不到,日志如下:W/SQLiteConnectionPool( 3681): Theconnection pool for database '/data/user/0/

2017-12-04 19:52:15 4218 1

原创 Android 7.1 GUI系统-vsync信号的处理(六)

一旦有事件发生,MessageQueue::cb_eventReceiver就会执行,进一步调用eventReceiver,如果事件类型是DisplayEventReceiver::DISPLAY_EVENT_VSYNC,开始处理UI数据的合成。MessageQueue.cppint MessageQueue::cb_eventReceiver(int fd, int events, void* ...

2017-12-03 11:35:42 2038

simple-ffmpeg-player.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

simplePlayer.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

jetty-libs-9.4.zip

jetty-client-9.4.24.v20191120, jetty-continuation-9.4.24.v20191120 jetty-http-9.4.24.v20191120 jetty-io-9.4.24.v20191120 jetty-security-9.4.24.v20191120 jetty-server-9.4.24.v20191120 jetty-servlet-9.4.24.v20191120 jetty-util-9.4.24.v20191120

2019-11-26

Gif文件的解码

Gif图片文件的解码过程

2018-02-14

android studio3.1匹配的gradle版本最新4.4

android studio3.1匹配的gradle版本最新4.4,gradle-4.4-20171031235950+0000-all.zip

2017-12-25

release3.1

cglib/cglib/3.1 Code Generation Library maven依赖 &lt;!-- https://mvnrepository.com/artifact/cglib/cglib --&gt; <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency>

2017-11-21

android make 介绍

android make 介绍 Make 文件说明 整个 Build 系统的入口文件是源码树根目录下名称为“Makefile”的文件,当在源代码根目录上调用 make 命令 时,make 命令首先将读取该文件。 Makefile 文件的内容只有一行:“include build/core/main.mk”。该行代码的作用很明显:包含 build/core/main.mk 文 件。在 main.mk 文件中又会包含其他的文件,其他文件中又会包含更多的文件,这样就引入了整个 Build 系统。 这些 Make 文件间的包含关系是相当复杂的,图 3 描述了这种关系,该图中黄色标记的文件(且除了 $开头的文件) 都位于 build/core/ 目录下。 Android 源码中包含了许多的模块,模块的类型有很多种,例如:Java 库,C/C++ 库,APK 应用,以及可执行文件 等 。并且,Java 或者 C/C++ 库还可以分为静态的或者动态的,库或可执行文件既可能是针对设备(本文的“设备”指 的是 Android 系统将被安装的设备,例如某个型号的手机或平板)的也可能是针对主机(本文的“主机”指的是开发 Android 系统的机器,例如装有 Ubuntu 操作系统的 PC 机或装有 MacOS 的 iMac 或 Macbook)的。不同类型的模块 的编译步骤和方法是不一样,为了能够一致且方便的执行各种类型模块的编译,在 config.mk 中定义了许多的常量, 这其中的每个常量描述了一种类型模块的编译方式,这些常量有: BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk BUILD_HOST_

2017-11-16

如何分析JAVA crash

如何分析JAVA crash 为什么程序会Crash? 什么是异常? 如何分析JAVA Crash 程序执行时发生了无法处理的异常 崩溃分为 Java Crash 和 Native Crash

2017-11-16

Arm公司培训资料

ARM7总线接口,ARM_THUMB指令,ARM编程技巧,ARM架构,ARM嵌入式开发,ARM处理器内核介绍

2013-12-20

ADB的安装卸载及使用

adb的使用介绍,包括adb的安装,adb的卸载,以及adb的常用的命令

2013-09-27

空空如也

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

TA关注的人

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