安卓高手之路之ClassLoader(二)】的更多相关文章

因为ClassLoader一定与虚拟机的启动有关系,那么必须从Zygote的启动开始看代码.下面就分析一下这些代码,行数不多: int main(int argc, const char* const argv[]) { // These are global variables in ProcessState.cpp //ProcessState.cpp中可能要用到一些main函数. mArgC = argc; mArgV = argv; mArgLen = 0; for (int i=0; …
我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓的点点滴滴总结.从而汇成流,聚为江,成为海. 下面就结合代码分析一下ClassLoader这个东西. 安卓应用程序是一个Dalvik虚拟机,加载的是Dex格式的文件.加载Dex格式的文件从直观上理解就是ClassLoader做的事情.那么,我们就从应用程序的启动说起,因为应用程序的启动一定是与Cla…
由于看C++和C代码看得很累,很辛苦.上一章终于解脱到java代码中来了. 第一个getClassLoader发生在main的preload方法中, public static void main(String argv[]) { preload(); } static void preload() { preloadClasses(); preloadResources(); } private static void preloadClasses() { final VMRuntime ru…
我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓的点点滴滴.从而汇成流,聚为江,成为海. 下面就结合代码分析一下ClassLoader这个东西. 安卓应用程序是一个Dalvik虚拟机,加载的是Dex格式的文件.加载Dex格式的文件从直观上理解就是ClassLoader做的事情.那么,我们就从应用程序的启动说起,因为应用程序的启动一定是与Class…
安卓中的画面不是纯粹由window组成.而是改成了window+view的组织模式.window是一个顶层窗口的概念.view就相当于在window内的控件.而subwindow则是依附于window的一些对话框.安卓在对window进行管理的时候,将window分为很多层,不同的层又对应于不同的window类型.下面这个图阐释了这种概念: 安卓首先将窗口按照layer分层,然后每一层又有很多window,每一个window又包含了很多的view和sublayer.这些分层的概念对于用户端是透明…
源码位置:frameworks/base/core/java/android/content/pm/PackageParser.java 源文件路径:android\frameworks\base\services\java\com\android\server\PackageManagerService.java 1.PackageManagerService.java 用到一个很重要的工具类,PackageParser.java. 这里面是一些 工具类 和 工具方法,辅助PackageMan…
很多人一提到Binder就说代理模式,人云亦云的多,能理解精髓的少. 本篇文章就从设计角度分析一下java层BInder的设计目标,以及设计思路,设计缺陷,从而驾驭它. 对于[邦德儿]的理解, 从通信的角度来看,就是一种通信方式而已,与socket没有任何区别.客户端transact,服务端onTransact.  但是,从[邦德儿]本身来说,如果客户端和服务端在一个进程,那么再通过底层驱动去把数据转过去就显得多余了.基于这种理论,设计的时候,如果客户端和服务端在一个进程就直接函数调用,而不再通…
单例模式 单例,顾名思义单个实例. class Person: __instance = None def __init__(self): pass @staticmethod def getInstance(): if Person.__instance: return Person.__instance else: Person.__instance = Person() return Person.__instance obj1 = Person.getInstance() print(o…
之前,我写了一个arc函数的用法:[js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形). arcTo: cxt.arcTo( cx, cy, x2, y2, 半径 ) cx,cy表示控制点的坐标,x2,y2表示结束点的坐标,如果我们想画一条弧线,需要提供3个坐标,开始点,控制点和结束点. 开始点一般可以通过moveTo或者lineTo提供.arcTo提供控制点和结束点. <style> body { background: #000; } #canva…
基于javascript原型链的层层递进查找规则,以及原型对象(prototype)的共享特性,实现继承是非常简单的事情 一.把父类的实例对象赋给子类的原型对象(prototype),可以实现继承 function Person(){ this.userName = 'ghostwu'; } Person.prototype.showUserName = function(){ return this.userName; } function Teacher (){} Teacher.proto…