- 博客(102)
- 资源 (5)
- 收藏
- 关注
原创 AbstractListView源码分析9
/** * Acts upon click */ private AbsListView.PerformClick mPerformClick; 表示upon click /** * Delayed action for touch mode. :延迟的动作用于touch mode */ private Ru
2016-12-27 11:34:01 469
原创 AbstractListView源码分析8
/** * Maximum distance to record overscroll 记录overscroll的最大的距离 */ int mOverscrollMax; /** * Content height divided by this is the overscroll limit.内容的高度除以这个数值,为overscro
2016-12-27 11:00:19 402
原创 AbstractListView源码分析7
/** * One of TOUCH_MODE_REST, TOUCH_MODE_DOWN, TOUCH_MODE_TAP, TOUCH_MODE_SCROLL, or * TOUCH_MODE_DONE_WAITING */ int mTouchMode = TOUCH_MODE_REST; /** * Y value
2016-12-26 20:31:08 484
原创 AbstractListView源码分析6
/** * The position of the view that received the down motion event */ int mMotionPosition; 接收到向下移动事件的视图的位置 /** * The offset to the top of the mMotionPosition view when
2016-12-26 19:19:48 435
原创 AbstractListView源码分析6
/** * Subclasses must retain their measure spec from onMeasure() into this member */ int mWidthMeasureSpec = 0; 子类通过OnMeasure方法获得measure spec /** * The top scroll indica
2016-12-26 19:14:47 479
原创 AbstractListView源码分析5
/** * Indicates whether the list selector should be drawn on top of the children or behind */ boolean mDrawSelectorOnTop = false; 表明了list selector是否应该绘制在children的顶部还是后面 /**
2016-12-26 15:49:01 385
原创 AbstractListView源码分析4
/** * Running state of which positions are currently checked */ SparseBooleanArray mCheckStates; 存储那些位置被选中了 /** * Running state of which IDs are currently checked.
2016-12-26 15:38:29 372
原创 AbstractListView源码分析3
/** * Normal list that does not indicate choices */ public static final int CHOICE_MODE_NONE = 0; /** * The list allows up to one choice */ public static final
2016-12-26 15:20:34 364
原创 AbstractListView源码分析2
/** * Regular layout - usually an unsolicited layout from the view system,一般的布局 */ static final int LAYOUT_NORMAL = 0; /** * Show the first item,展示第一项 */ sta
2016-12-26 15:11:29 355
原创 AbstractListView源码分析1
public abstract class AbsListView extends AdapterView implements TextWatcher,ViewTreeObserver.OnGlobalLayoutListener, Filter.FilterListener, ViewTreeObserver.OnTouchModeChangeListener,
2016-12-26 14:45:08 415
原创 源码之ListView分析
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。另外
2016-12-26 10:14:28 405
原创 针对illegalstateException OnloadFinished
Here is some background to help anyone who encounters this exception.The exception is thrown because the framework doesn't allow to commit a fragment transaction in the same call stack as onLoadFi
2016-12-23 17:53:43 365
原创 启动zygote
在init.rc中配置zygote启动参数,使用adb pull /init.rc ,文件和zygote相关配置信息如下。service zygote /system/bin/app_process -Xzygote5.2 启动Socket服务端口 当zygote服务从app_process启动后,会启动一个Dalvik虚拟机,虚拟机执行的第一个Java类时Zygoteinit.j
2016-12-23 16:18:17 438
原创 开始虚拟机的准备工作
int dvmStartup(int argc,const char* const argv[],bool ignoreunrecognized,JNIEnv* pEnv){ int i,cc; assert(gDvm.initializing); LOGV("VM init args (%d):\n",argc); for(i
2016-12-23 16:03:57 545
原创 Dalvik虚拟机相关的可执行程序
当Java程序运行时,都是一个虚拟机解释java的字节码,将这些字节码翻译成本地CPU的指令吗,然后执行。对Java程序而言,负责解释并执行的就是一个虚拟机。 dalvikvm的作用就是创建一个虚拟机并执行参数中指定的Java类,说明该程序的使用方法: 1.首先新建一个名为Foo.java的文件 class Foo{
2016-12-23 15:33:53 566
转载 Dalvik Vm架构
输入.class经过Dx工具、Class Loader变为字节码,然后通过解释器,内存管理,线程管理等到host OS.Android应用编译的流程: Java文件 jdk class文件 AndroidManifest,XML Resource文件
2016-12-23 14:36:08 467
原创 Dalvik控制VM详解
1.扩展的JNI检测 JNI(Java native Interface)是Java本地接口,提供了Java语言程序调用本地(C/C++)代码的方法。为了能触发CheckJNI标志位,第二种特性是dalvik.vm.checkjni,它的值覆盖了ro.kernel.Android.checkjni的值。如果这个特性没有被定义,dalvik.vm.checkjni也没有设置成false,
2016-12-23 14:26:01 2074
原创 Dalvik VM的主要特征
在Dalvik VM中,一个应用中会定义很多类,编译完成后有很多相应的.class文件,.dex文件吧所有的.class文件内容整合到一个文件中。除了减少整体文件尺寸,I/0操作,也提高了类的查找速度。 每个Android应用都运行在一个Davik Vm实例中,每个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制、内存分配和管理、Mutex等都是依赖底层操作系统实现的。所有的And
2016-12-23 11:55:06 477
原创 Android虚拟机-Dalvik VM架构
Dalvik, VM会监视所有的程序APK,并且创建依赖关系熟,为每个程序优化代码并存储在Dalvik缓存中。Dalvik VM第一次加载后会生成Cache文件,加速加载,Dalvik Vm的第一次加载很慢。 dx是一套工具,可以将Java的.class文件转换成.dex格式,一个dex文档通常会有多个.class文件。由于dex有时必须进行优化,会是文件大小正价1-4倍,并以ODEX结尾
2016-12-23 11:32:28 1159
原创 java虚拟机的生命周期
同一台计算机上同时运行三个java程序,则会得到三个java虚拟机实例。每个java程序都运行在自己的java虚拟机实例 。在Java虚拟机内部有两种线程:守护线程与非守护线程。守护线程由自己使用的,比如执行垃圾收集任务的线程。但是,Java程序也可以把它创建的任何线程标记为守护线程。而java程序中的初始线程-就是开始于main()的,是非守护线程。
2016-12-23 10:30:46 479
原创 Java虚拟机的体系结构
java虚拟机由如下五个部分组成: 一组指令集 一组寄存器 一个栈 一个无用单元收集堆 一个方法区1.Java指令集 Java虚拟机支持大约248个字节码,每个字节码执行一种基本的CPU运算,例如把一个整数加到寄存器、子程序转移等。Java指令集相当于Java程序的汇编语言。 虚拟机的内层循环执行过程如下: do{
2016-12-23 10:23:38 531
原创 Android内核和Linux内核的区别
1.Android系统层面的底层是Linux,并且在中间加上了一个叫做Dalvik的Java虚拟机,从表面层看是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。为了支持多个虚拟机在同一设备上高效运行,dalvik被改写过。Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex)-该格式经过优化,以将内存好用降到最低。Andr
2016-12-22 20:12:47 22520
转载 访问者模式
在访问者模式中,使用一个访问者类,改变元素类的执行算法。通过这种方式,元素执行算法可以随着访问改变而改变。这种设计模式属于行为型的模式。实现:创建一个定义接受操作的ComputerPart接口。Keyboard、Mouse、Monitor和Computer实现了ComputerPart接口实体类。定义了另一个接口ComputerPartVisitor,定义了访问者类的操作。1.定义一个
2016-12-22 16:48:20 344
转载 模板方法
在模板方法中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重新方法实现,但调用将以抽象类中定义的方式进行。属于行为模式。
2016-12-22 16:38:33 287
转载 策略模式
在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。使用场景:1.如果一个系统里面有许多类,他们之间的区别在于他们的行为,使用策略模式可以动态让一个对象的许多行为选择一种行为 2.一个系统需要动态几种算法选择一种3.如果一个对象有很多行为,不恰当的使用会产生很多条件选择
2016-12-22 16:35:28 292
转载 空对象模式
在空对象模式中,一个空对象取代NULL对象实例的检测。反应一个不做任何动作的关系,NULL对象也可以在数据不可用的时候提供默认的行为。实现: public class NullCustomer extends AbstractCustomer{ String getName(){} boolean isNi1(){} }
2016-12-22 16:25:49 294
转载 状态模式
类的行为基于它的状态改变的。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的context的对象。1.创建一个接口interface State{ doAction(Context context);}2.创建实现接口的实体类class StartState implements State{ doAction(Context cont
2016-12-22 16:18:00 288
转载 观察者模式
观察者模式:当对象存在一对多关系时,则使用观察者模式。比如,当一个对象被修改是,则会自动通知它的依赖对象。实现:观察者模式使用三个类Subject、Obsever和Client。Subject对象带有绑定观察者到Client对象和从Client对象解绑观察者的方法。1.创建Subjectclass Subject{ List observers=new ArrayList(
2016-12-22 16:12:19 377
转载 备忘录模式
备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行文模式。主要解决:所谓的备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,可以在以后将对象恢复到保存的状态。实现: 备忘录模式使用三个类Memoto、Originator和CareTaker。Memoto包含了要被恢复的对象的状态。Originator创建并在Memen
2016-12-22 16:00:37 319
转载 迭代器模式
迭代器模式:这种模式用于顺序访问集合对象的元素,不需要知道结合对象的底层表示意图:提供一种方法顺序访问一个聚合对象中各个元素,而又无需暴露对象内部表示优点:1.它支持以不同的方式遍历一个聚合对象 2.迭代器简化了聚合类 3.在同一个聚合上可以由多个遍历 4.迭代器模式中,增加新的聚合类和迭代器类很方便步骤1.创建接口public interface Iterator{ pub
2016-12-22 15:46:27 259
原创 解释器模式
解释器模式(Interpret pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种解释器使用该标示来解释语言中的句子。主要解决:对于一些固定文法构建一个接收句子的解释器。使用场景:1.可以将一个需要解释执行的语言中的句子表示一个抽象语法树2.一些重复出现的问题可以用一种简单的语言来进行表达3.一个简单预付要解释场景
2016-12-22 15:30:46 220
转载 命令模式
命令模式是一种数据驱动的行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象,并把给命令传递给相应的对象,该对象执行命令。实现:我们首先创建作为命令接口Order,然后创建作为请求的Stock类。实体命令类BuyStock和sellStock,实现了Order接口,将执行实际的命令处理。创建作为调用类的Braoker,它接受订单并且能下订单。1
2016-12-22 15:21:17 240
转载 责任链模式
责任链模式:为请求创建了一个接收者对象的链,这种模式给予请求的类型,对请求的发送者和接受者进行解耦。意图:避免请求发送者与接受者耦合在一起,让多个对象都有可能接收请求,经这些对象连接成一条链,并且沿着这条链传递请求,直到处理它为止。主要解决:责任链上的处理者负责处理请求,客户只需要将请求方到职责链上即可,无须关系请求的处理细节和请求的传递,所以职责链经请求的发送者和请求的处理解耦了。1
2016-12-22 15:02:41 449
转载 代理模式
代理模式的定义是:给某一个对象提供一个代理,并有代理对象控制对原对象的应用代理模式包含 如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口RealSubject:真实的主题角色,是实现抽象主题接口的类Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象提供与真实对象相同的接口,以便在任何时刻都能代替
2016-12-22 14:44:30 353
原创 外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并想客户端提供了一个客户端可以访问系统的接口。这种类型的设计结构型,隐藏系统的复杂性。1.创建一个接口public interface Shape{ void draw();}2.创建一个接口的实现类public class Rectangle implements Shape{ public void d
2016-12-22 10:56:47 300
原创 装饰器模式
装饰者模式:动态的将 责任附加到对象上,若要扩展对象,装饰者模式提供了比继承更弹性的使用场景:对象有主题+许多可选的布局或者功能构成,使用继承或者接口会产生很多类,且很难扩展。如,现在需要一个汉堡,主题是鸡腿堡,可以选择添加生菜、酱、辣椒等许多其他的配料,使用装饰者模式。public abstract class Humburger{ protect String name;
2016-12-22 10:43:05 349
原创 过滤器模式
过滤器模式:过滤器模式或标准模式是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式吧他们连接起来,这种类型的设计模式属于结构型模式。实现:将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Person对象的列表。1.创建一个类,在该类上应用标准Person.java public class Pe
2016-12-22 10:12:51 395
原创 桥接模式
桥接模式:用于把抽象化与实现化解耦,使得二者可以独立变换。这种涉及模式属于结构型模式,通过抽象化与实现化之间的桥接结构,实现二者的解耦。1.先定义Implementor接口的,代码如下:public interface Implementor{ public void operationImpl();}2.定义Abstraction接口,器实现成为抽象类,代码如下:pu
2016-12-21 16:37:11 360
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人