Wxy's Blog
  • 首页
  • 归档
  • 标签
  • 关于
  • 友链
  •   
  •   
不因虚度年华而悔恨,不因碌碌无为而羞愧

WindowManagerService简析

WindowManagerService的职责 Window的相关操作都是借由WindowManagerService实现的,而且它是WindowManager的管理者。 1.窗口管理负责窗口的启动、添加和删除。另外窗口的大小和层级也是交由WMS进行管理的。 核心成员:DisplayContent、WindowToken,WindowState。 2.窗口动画窗口间进行切换时,窗口动画由WMS

2019-01-30
Android

SparseArray简析

HashMap在Android开发中是一种常用的数据结构类型,但是占用内存方面相对会比较大,而且复杂的机制导致运行效率也不高。所以Android系统提供了SparseArray以及ArrayMap来对其进行替代。这也是Android性能优化的一种手段。 SparseArray SparseArray可以对key为Integer类型的HashMap进行替代。还有 LongSparseArray

2019-01-28
源码解析

Bitmap分析

Bitmap简介位图文件(Bitmap),扩展名可以是.bmp或.dlb。它将图像定义为由像素组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。 在安卓系统中bitmap图片一般是以ARGB_8888来进行存储的。 颜色格式 每个像素占用内存(byte) 每个像素占用内存(bit) ARGB_8888(默认) 4 32 ALPHA_8 1 8 ARG

2019-01-28
Android

ANR分析

ANR概述 ANR:Application Not Responding应用程序未响应,Android会要求一些事件需要在规定时间内处理完成,如果超过预定事件内未能得到有效响应或者响应时间过长,就会造成ANR。 ANR由消息处理机制保证,Android在系统层实现了发现ANR的机制,核心原理是消息调度和超时处理。 ANR本质是性能问题。实际上是对应用程序主线程的限制,要求主线程在限定时间内处理

2019-01-28
Android

数据结构--CopyOnWriteArrayList实现原理及简析

CopyOnWriteArrayList定义 ArrayList本身不是线程安全的,在读线程读取ArrayList的数据时,此时在去写入数据,就会触发fast-fail机制,抛出ConcurrentModificationException异常。也可以使用Vector去代替ArrayList使用,或者使用Collections.synchronizeList()包裹ArrayList。但他们都是

2019-01-18
数据结构

数据结构--ConcurrentHashMap原理及解析

HashMap本身不是线程安全的,通常在多线程情况下可以去使用HashTable替代HashMap使用,该类中基本所有的操作方法都采用synchronized进行修饰,所以在高并发的情况下,每次只能有一个线程获取对象监视器锁,并发性能太低。 针对上述情况,就产生了ConcurrentHashMap这个类去解决上述问题,提高效率。 ConcurrentHashMap重要参数分析tab

2019-01-16
数据结构

数据结构--ArrayList实现原理及简析

ArrayList定义ArrayList是基于List接口实现的大小可变的数组,元素允许为任意属性包括null。同时非有序,非同步(线程不安全)。主要用于装载数据。 ArrayList底层实现是数组。 ArrayList的重要参数分析12345678910//ArrayList 默认容量为10private static final int DEFAULT_CAPACITY = 10;//用于

2019-01-15
数据结构

设计模式--装饰模式

动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更加灵活。 装饰模式-组成Component抽象构件 component是一个接口或者抽象类,定义了我们最核心的对象,也就是最原始的对象。 1234public abstract class Component{ //抽象方法 public abstract void operate();} C

2019-01-11
设计模式

设计模式--责任链模式

使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链路传递,直到有对象处理请求为止。 责任链模式-定义Handler:抽象处理者 该角色对请求进行抽象,并定义一个方法来设定和返回对下一个处理者的引用。 12345678910111213public abstract class Handler{ private Handle

2019-01-11
设计模式

RxJava 使用及解析

RxJava基本知识 RxJava是一个在JVM上使用可观测的序列来组成异步的、基于事件的程序的库。 通常情况下使用Handler、AsyncTask完成异步任务操作,当任务比较多的时候,使用这种方式就会变得相当繁琐,尤其是嵌套式的执行任务(需要上一项先完成)。 RxJava可以实现异步任务执行的前提下保持代码的清晰。通过创建一个Observable来完成异步任务,然后组合各种操作符实现不同的

2019-01-10
Hide

理解Window及WindowManager

1.基本概念Window:他是一个抽象类,具体的实现类为PhoneWindow,它对View进行管理。每个Window都会对应一个View和一个ViewRootImpl,Window通过ViewRootImpl与View建立联系。 WindowManager:是一个接口类,继承ViewManager,主要用于管理Window,具体实现类为WindowManagerImpl。实际使用中无法直接访问

2019-01-10
Android

ListView简析

ListView定义 专门用于处理那种内容元素很多,手机屏幕无法展示出所有的内容的情况。可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移到屏幕内了。 ListView相比RecyclerView,有一些优点: addHeaderVew(),addFooterView()添加头尾视图 android:divider设置自定义分割线 setOnItemClickList

2019-01-04
Android

include、merge及ViewStub相关

主要解析include、merge及ViewStub include 主要为了解决重复定义相同布局的问题。把一套布局封装起来,需要使用时使用标签引入。提高代码复用性 使用注意事项: 如若我们在中设置了android:id属性,这个id会覆盖原先`中layout设置的布局id,所以在引用该id时需要注意 如果需要在中需要使用andrdoid:**属性,必须要设置layout_width以及layo

2019-01-03
Android 性能优化

Java - 泛型

泛型基本概念 Java泛型是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。 本质上是编译器为了提供更好的可读性而提供的一种方式,JVM中是不存在泛型的概念的。 泛型的出现在很大程度上是为了方便集合的使用,使其能够记住元素的数据类型。泛型是对Java语言类型系统的一种拓展,可以把类型参数看作是使用参数

2019-01-02
Java

自定义ViewGroup实践

自定义ViewGrouop - FlowLayout实现方式 继承特定ViewGroup,例如LinearLayout 比较常见,效果类似于一堆View的组合。 实现比较简单,无需自己处理测量与布局的过程。 继承ViewGroup派生特殊layout 主要用于实现自定义的布局,按照自身需求制定不同的显示方法。 实现稍微复杂,还需要对ViewGroup进行处理,主要是自身的onMeasure

2019-01-02
Android
1…34567…12

搜索

Hexo Fluid