一.前言 1.1.C++界面库 MFC.WTL.DuiLib.QT.Skia.OpenGL.Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的. 1.2.Android基本概念 窗口 对用户来说, 窗口就是手机屏幕, 包括下面的那些home.back按键.状态栏等.对于Activity来说, 窗口就是除系统状态栏和系统按键的屏幕区域, 有window之类的概念.对于wms来说, 它没有什么窗口的概念, 它能接受的只是一个个view而已.也就是…
一.前言 1.1.C++界面库 MFC.WTL.DuiLib.QT.Skia.OpenGL.Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的. 1.2.Android基本概念 窗口 对用户来说, 窗口就是手机屏幕, 包括下面的那些home.back按键.状态栏等.对于Activity来说, 窗口就是除系统状态栏和系统按键的屏幕区域, 有window之类的概念.对于wms来说, 它没有什么窗口的概念, 它能接受的只是一个个view而已.也就是…
performTraversals方法会经过measure.layout和draw三个流程才能将一帧View需要显示的内容绘制到屏幕上,用最简化的方式看ViewRootImpl.performTraversals()方法,如下. private void performTraversals() { ... performMeasure(childWidthMeasureSpec, childHeightMeasureSpec); ... performLayout(lp, mWidth, mHe…
本文主要探讨能够触发performTraversals()执行的invalidate().postInvalidate()和requestLayout()方法的流程.在调用这三个方法到最后执行到performTraversals()方法,涉及到到通过Choroegrapher请求Vsync信号,实现按帧绘制的流程,所以还会介绍Choroegrapher类的工作流程. 一.requestLayout()流程 invalidate()和postInvalidate()能够触发View的重画,这两个方…
Activity.View.Window之间的关系可以用以下的简要UML关系图表示,在这里贴出来,比较能够帮组后面流程分析部分的阅读. 一.Activity的启动流程 在startActivity()后,经过一些逻辑流程会通知到ActivityManagerService(后面以AMS简称),AMS接收到启动acitivty的请求后,会通过跨进程通信调用AcitivtyThread.handleLauncherActivity()方法,我们从这里开始分析,首先来看handleLauncherAc…
众所周知,Android是一个基于Linux实现的操作系统.但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别. 所以Android也需要运行环境,需要Linux内核在启动完成后加载Android Framework运行所需要的资源.当Framework完成初始化后才能继续启动相应的APK应用程序. Framework这么重要,那我们该如何学习呢? 关于如何学习Android Framework开发知识,最近有幸在前阿里技术…
简介 来自微信公众号: ali_tech 阿里巴巴官方技术号,关于阿里的技术创新均呈现于此. 本内容来自微信公众号的分享,最后更新时间2019-10-26,请关注对应公众号接收最新分享,定期同步地址: https://www.geek-share.com/geeker/1059942.html,支持免费导出公众号历史文章 文章 2019年10月 贾扬清:把生命浪费在有意思的事情上 汇报时,如何让老板快速抓住重点? | 黄金三步法 特稿 | 蚂蚁“备战”TPC-C这1年 独家揭秘 | 阿里怎么做双…
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定实现细节则可以日后再对相应源码进行研读.在进行实际的分析之前,我们先来看下面这张图: 我们来对上图做出简单解释:DecorView是一个应用窗口的根容器,它本质上是一个FrameLayout.DecorView有唯一一个子View,它是一个垂直LinearLayout,包含两个子元素,一个是Titl…
1  背景 还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现. 前面<Android触摸屏事件派发机制详解与源码分析一(View篇)>文 章的3-1小节说过Android中的任何一个布局.任何…
本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双十一的流量考验下浴火重生,成为蚂蚁金服全部核心系统的承载数据库.这一路走来的艰辛和故事,蚂蚁金服高级研究员.OceanBase 团队负责人阳振坤将为你娓娓道来. 什么是OceanBase数据库?   是阿里巴巴集团自主研发的分布式关系型数据库,融合传统关系型数据库强大功能与分布式系统的特点,具备持续…
作业要求的博客链接:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 分析产品:石墨文档Android客户端 第一部分 调研和评测 1.下载并使用,按照描述的bug定义,找3~5个功能性的比较严重的bug. BUG定义:软件的缺陷 BUGS: 1.1导入和导出文档格式错乱问题 图一是测试文档在电脑word的格式,可以看到有页眉和页码,图二是在手机wps打开测试文档,页眉和页码也存在,图三是将测试文件导入石墨文档中,出现文字排版错乱,…
转载地址:http://p.codekk.com/blogs/detail/54cfab086c4761e5001b253f 本文为 Android 开源项目源码解析 公共技术点中的 View 绘制流程 部分分析者:lightSky View 绘制机制 1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw.整个 View 树的绘图流程在ViewR…
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/16330267 在上一篇文章中,我带着大家一起剖析了一下LayoutInflater的工作原理,可以算是对View进行深入了解的第一步吧.那么本篇文章中,我们将继续对View进行深入探究,看一看它的绘制流程到底是什么样的.如果你还没有看过我的上一篇文章,可以先去阅读 Android LayoutInflater原理分析,带你一步步深入了解View(一) . 相信每个Android程…
框架分析 在之前的下拉刷新中,小结过触屏消息先到WindowManagerService(Wms)然后顺次传递给ViewRoot(派生自Handler),经decor view到Activity再传递给指定的View,这次整理View的绘制流程,通过源码可知,这个过程应该没有涉及到IPC(或者我没有发现),需要绘制时在UI线程中通过ViewRoot发送一个异步请求消息,然后ViewRoot自己接收并不处理这个消息. 在正式进入View绘制之前,首先需要明确一下Android UI的架构组成,偷图…
转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 . 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(mea…
还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现. 前面<Android触摸屏事件派发机制详解与源码分析一(View篇)>文章的3-1小节说过Android中的任何一个布局.任何一个控件其实都…
目前看到的几篇比较有感触的文章,分别是: 前端Leader如何做好团队规划?阿里内部培训总结公开   ——>这里会有关于针对技术项目如何做规划的一些指导,非常有价值 程序员吃的是青春饭?本质上取决于…  ——>推荐了一些书籍,这些是之前作为测试的自己基本没有特别看的,为了能够达到更高的技术专家的标准,必须把这些内容都啃下来才可以 如何在阿里技术面试中脱颖而出? ——>之前也参加了很多次的面试,其实有自己总结到一些内容,跟这里面提到的内容做一个互补,帮助自己在后面做项目的时候更加有的放矢…
前言 我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升.当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢?本篇文章会给你一个满意的答案. 1.布局优化工具 在讲到如何去布局优化前,我们先来学习两种布局优化的工具. 1.1 Hierarchy Viewer Hierarchy Viewer是Android SDK自带的可视化的调试工具,用来检查布局嵌套和绘制的时间.需要注意的是在在Android的官方文档中提到:出于安全考虑,…
前言 一个优秀的应用不仅仅是要有吸引人的功能和交互,同时在性能上也有很高的要求.运行Android系统的手机,虽然配置在不断的提升,但仍旧无法和PC相比,无法做到PC那样拥有超大的内存以及高性能的CPU,因此在开发Android应用程序时也不可能无限制的使用CPU和内存,如果对CPU和内存使用不当也会造成应用的卡顿和内存溢出等问题.因此,应用的性能优化对于开发人员有着更高的要求.Android性能优化分为很多种,比较常用的有绘制优化.内存优化.耗电优化和稳定性优化等,这个系列我们就来学习性能优化…
摘要: 这是我为大家分享的如何拿到阿里技术offer系列文章中的第一篇,今天分享的文章的作者是一位在2015年阿里的校招中成功得到offer的美女学姐,从学姐的这篇文章中我们能学到很多在阿里面试的宝贵的经验和技巧.接下来,让我们一起分享吧 作为一枚计算机软件专业的学生党,从进入大学校园的第一门课程<职业发展概论>上就明白一个道理:“在计算机软件行业,学不到老那就活不到老”.我们的专业是当下世界中发展最快的,我们不得不紧跟时代的脚步,不断学习,只有站在行业的前沿,才能保证自己不被行业淘汰. 作为…
转自:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 . 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measure)…
阿里云CTO章文嵩已于昨日离职,据传加盟滴滴.可靠消息透露,章文嵩在滴滴出行担任的是技术高级副总裁的职位.这样一个身价上亿的技术大牛,是怎么看待开源项目的?InfoQ:关于淘宝-阿里系的开源进程,我们从外面看起来似乎是有三个比较明显的阶段:第一个是说我引入开源的方案来替换掉商业的方案:第二个是我们把开源的方案改进,然后形成一些淘宝自己的T项目,再通过淘蝌蚪等平台把这些项目对外开源:第三个阶段好像是现在在用自研的方案去替换一些开源的方案.您自己是怎么看待这个过程的?章文嵩:这应该是我们发展的不同阶…
前言 转载请申明转自[https://www.cnblogs.com/andy-songwei/p/10955062.html]谢谢! 自定义View.多线程.网络,被认为是Android开发者必须牢固掌握的最基础的三大基本功.Android View的绘制流程原理又是学好自定义View的理论基础,所以掌握好View的绘制原理是Android开发进阶中无法绕过的一道坎.而关乎到原理性的东西往往又让很多初学者感到难以下手,所以真正掌握的人并不多.本文采用非常浅显的语言,从顺着Android源码的思…
原文链接 XPath高级定位技巧 XPath 简介 XPath 的英文全称为:XML Path Language,意旨对 XML 中的元素进行路径定位的一种语言,它可适用 XML 标记语言,Html 标记语言,app Dom 结构.XPath 是自动化工具的定位基础,可适用于 Selenium 工具,Appium 工具,Appcrawler 工具.由于前面章节已经对 XPath 进行说明,本篇只做举例说明. XPath 基本语法 下面是 XPath 的常用方法: XPath 模糊定位技巧 con…
[原文]http://blog.csdn.net/qinjuning 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measure).是否重新需要安置视图的位置(layout).以及是否需要重绘 (draw),其框架过程如下:   步骤其实为host.layout()  接下来温习一下整个View树的结构,对每个具体View对象的操作,其实就是个递归的实…
1 android绘制view的过程简单描述  简单描述可以解释为:计算大小(measure),布局坐标计算(layout),绘制到屏幕(draw):            下面看看每一步的动作到底是什么,            第一步:当activity启动的时候,触发初始化view过程的是由Window对象的DecorView调用View(具体怎样从xml中读取是用LayoutInflater.from(context).inflate)对象的 public final void measu…
Android绘制View的过程研究——计算View的大小 转自:http://liujianqiao398.blog.163.com/blog/static/1818272572012102321850385/ 2012-11-23 14:24:59|  分类: Android开发 |  标签:android  view  android开发  |举报|字号 订阅     下载LOFTER客户端     一.android绘制view的过程简单描述           简单描述可以解释为:计算…
阿里技术突破性创新 世界顶级大规模数据处理分析管理会议VLDB(VERY LARGE DATA BASE)于9月1日至5日在杭州举办,该会议也是也是大数据云计算领域的盛会,阿里巴巴两个团队在这个会议上分别发表论文.两篇论文分别描述了在超大规模分布式集群环境下如何保持性能稳定,以及构建大规模的数据库云(RDS)的核心技术.两篇论文代表了云技术水平处于世界前列的阿里巴巴近些年的研究成就. 两篇论文的研究与阿里巴巴的云计算平台“飞天”相关. 分布式调度系统:“伏羲” 其中的分布式调度系统称为”伏羲”.…
SAE Python使用经验 好文推荐 SAE Python使用经验 好文推荐…
要明白这个流程,我们还得从第一部开始,大家都知道 在activity里面 setcontentview 调用结束以后 就可以看到程序加载好我们的布局文件了,从而让我们在手机上看到这个画面. 那么我们来看一下这个源码是如何实现的. [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 /**      * Set the activity content from a layout resource.  The resource wi…