- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 浅析 Android中Activity窗口创建流程
问题:为什么作为四大组件中的Activity能有界面显示,而其他组件都没有界面显示,到底是谁在控制着界面显示呢?下面我们就来研究一下吧! 我们发现Activity内部依赖一个叫Window的东西(“窗口”,字面意思有点像是用于展示界面的东西),的确它就是Activity能够界面显示的关键,我们通过它为纽带来进一步阐述。public class Activity extends Con...
2018-08-03 10:46:40 2139
原创 浅析Android页面刷新机制
浅析Android页面刷新机制角色局部/全局刷新页面是APP最直观的呈现,它的流畅与否直接决定了用户的去留。本次与大家一起去看看页面刷新背后的秘密。角色ViewRootImpl 看名字就很明白了(视图源头)(1) 视图是由它负责创建的,它内部打通了人机交互的门槛(2) 既然作为视图的根,子视图的刷新请求必然最终都是委托它来发送,同样子视图的绘制流程源头也是由它发起的。问题来了,既然 ViewRootImpl负责视图刷新请求的发送,也真实发起页面绘制,自己干不就可以了??Choreograp
2021-03-03 00:39:13 1203
原创 浅析-探究Android世界 APP启动的奥秘一
走进Android世界,指尖轻轻的触碰即可打开一个个缤纷多彩的应用,即可享受极致的交互体验。到底是谁在背后操纵这一切,默默维护着秩序?角色登场:系统服务: ActivityManagerService (AMS管理组件生命周期等); WindowManagerService(WMS管理窗口展示);PackageManagerService(PKMS记录并管理所有包体相关信息):...
2020-01-03 18:53:11 159
原创 android采坑 - 源码分析GridView第一个Item点击无响应
问题产生:GridView之前用的并不多,然后刚简单一用就发现第一个Item点击事件无响应,这就非常尴尬。下面是问题代码:public View getView(final int position, View convertView, ViewGroup parent) { CheckedImageView checkedImageView = null; if (conv...
2019-10-08 18:39:58 230
原创 自定义小插件 - Android线性/连锁式业务功能设计
插件代码参考我的Github: https://github.com/xiaogaojack/android_simple_business_line问题: 经常遇到这样的一种情况:先做事件A, 做完事件A后继续做事件B(B依赖A的执行结果)这样就是链式的业务了,这种链式的功能开发起来很不舒服,必须先调用A,A的回掉再处理B, B的回掉在处理C等等,耦合关系太繁重,代码很混乱? ...
2018-07-17 17:51:07 167
原创 每日小点 - 浅谈Android中主线程,进程,线程,Looper
相信大家开发过程也经常听过主线程,进程,线程等术语。那么这些术语在android中又是怎么运作的呢。1,线程,进程基本定义:进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。通俗些,我们数据访问正常是以进程为单位的(常规下跨进程的数据是无法访问,除非采用跨进程通信方式),而线程则是cpu调度的基本,记录运行时方法栈等等信息。2,android中的主线程:大家都知道,主线程一般是...
2018-07-10 10:41:39 818
原创 每日小点- intent详解
1,Intent语义:Intent(字面意思意图:用于描述想要做的事情,执行的动作),在android中贯穿所有组件交互,它是必不可缺少的。我们可以理解为 android中是通过指定意图去找到正确的组件“干事情“。那就自然而然的带来一个问题:怎么去找到正确组件,这些组件怎么跟意图建立关系,这些组件又在哪?带着问题我们继续往下分析。2,Intent由来:大家有没有关注过:在开发过程中有用到Inten...
2018-05-29 16:32:04 399
原创 每日小点-Properties用法
android中Properties一般用的比较少,一般场景是用于获取系统配置键值对 System.getProperties()。其实
2018-05-24 11:34:52 260
原创 浅析性能优化-电量优化工具(Battery Historian)
性能作为app非常重要的指标,自然需要得到重视。这两天简单了解了下电量性能统计工具Battery Historian,让作为小白的我有了些头绪。一,有那些耗电项?(1)屏幕。如今的手机分辨率越来越高,进而导致使用时耗电显著增加(可以对比以前老人机和现在大屏手机,续航能力根本没法比)(2)wifi和蜂窝无线。作为数据报文传输的依赖组件,该组件会持续消耗电能。(3)CPU。毫无疑问,处理器计算是消耗电...
2018-04-11 16:39:35 416
原创 浅析android图片加载之Glide框架一
图片是承载数据内容最直接的方式,对于客户端而言图片加载无疑是非常重要的,因此我们有必要去了解部分图片加载框架实现。Glide图片框架用起来很方便,接口调用都简单易懂,加载图片也非常流畅。今天咱们来简单的研究下,它怎么处理的?一,图片加载需考虑的问题1,如何明确加载图片的时机? 只要网络请求就立马加载?2,图片加载如何异步?3,图片加载是否有中间过度状态?4,图片加载后是否有需要干预处理图片?5,图...
2018-04-03 16:04:25 392
原创 浅析View的Measure过程
一,疑问? 相信很多人有过这样的经历,直接在(setContentView)之后就直接使用view.getMeasuredHeight/Width,很尴尬, 结果是0。 那么大家有没有想想为什么是0? 前面我们提到view测绘流程实际源头是activity.onResume回调之前创建的ViewRootImpl处理。而setContentView也仅仅只是构建视图层级结构而已,还远远未到需要...
2018-03-27 10:09:30 322
原创 浅析android动画绘制流程
应用开发中常会用到动画,我们也会经常用到动画(帧动画,补间动画,属性动画),但是可能很多人都不知道动画在什么地方绘制,怎么绘制的?知道这些后我们才能更加得心应手去使用它。一, 动画基本组件(1),Animation 动画定义,包含动画相关配置信息(开始时间,执行间隔,重复等等), 用到插间器Interpolator, Transfromation动画转化状态(2)Interpolator 插间...
2018-03-15 11:28:55 764
原创 浅析Retrofit使用及分发逻辑
retrofit是基于okHttp网络请求框架的进一步业务优化后的网络加载库,方便集成使用。1,retrofit的优势?(1) , retrofit基于接口设计,这样就能简单的根据业务需求定义接口。(2), retrofit采用注解的方式,可以更简单直观的使用(3), 更为彻底的解耦, retrofit将业务和能力分开。转化器(如Gson等 针对网络请求,回应数据处理),调用适配器(支持RxJ...
2018-03-14 08:40:35 181
原创 浅析OkHttp使用-请求分发流程
okhttp以其卓越的网络处理性能,而被广泛的使用。作为一个新手的我,当然也得熟悉下。以下内容如有问题请及时指正一, OkHttp重要组成部分OkHttpClient: 作为OkHttp使用的核心组件,入口。 其包含请求分发, 响应拦截, 网络配置(超时,重定向重试)等等 。OkHttpClient可通过OkHttpClient.Builder创建。Call: 请求调用的抽象接口,支持同步和...
2018-03-08 11:02:17 552
原创 浅析View绘制流程之“源头”探寻
关于view的绘制流程,大家都知道会有onMeasure,onLayout,onDraw。想必也很好奇,为什么view为什么会存在这些绘制周期,到底分发控制的源头在什么地方呢?它又是何方神圣? 1,追溯源头在何地? (1)特殊activity生命周期onCreate(), onResume()。 先理一理思路,要找到视图分发的源头的话,我们首先要知道我
2018-02-05 15:35:08 316
原创 浅析listview及Adapter原理二
之前有说过adapter如何跟listview产生联系,以及通知listview去全局刷新requestlayout。请参考 浅析listview及Adapter原理一。接下来就要看下全局刷新的时候跟adapter之间又做了什么交互?(1) listview测量过程中与adapter交互全局刷新就会调用到视图的onMeasure,onLayout,onDraw流程。我们参考下listv
2018-02-01 16:21:56 229
原创 浅析listview及Adapter原理一
ListView作为常用的列表控件,通常会定义不同适配器以承载其所绑定数据的特殊显示。常用的适配器(ArrayAdapter, BaseAdapter等)也都用过,但是大家有没有考虑过为什么要用适配器?问题一:适配器是承载数据的,如何跟listview建立联系? 疑问我们需要了解适配器Adapter基础接口:registerDataSetObserver (注册数据监听
2018-01-31 11:24:28 756
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人