BaseDexClassLoader
 
    public class BaseDexClassLoader 
 extends ClassLoader 
 
     
     
      
       
       |  Known Direct Subclasses | 
 
      
    
 
     
    
 
    不同基于dex的 ClassLoader实现之间的通用功能的基类。
 
    Summary
 
     
     
     
     
     
     
     
     
      
       
       | Inherited methods | 
 
       
       |  From class  java.lang.ClassLoader  
          
           
           
            
             
             |  void |  clearAssertionStatus() 将此类加载器的默认断言状态设置为 false,并放弃与类加载器关联的所有程序包缺省值或类断言状态设置。 |   
             |  final Class<?> |  defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) 使用可选的 ProtectionDomain将字节数组转换为类 Class的实例。 |   
             |  final Class<?> |  defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) 一个转换 ByteBuffer为 Class类的实例,带有可选 ProtectionDomain。 |   
             |  final Class<?> |  defineClass(byte[] b, int off, int len) 此方法在API级别1中已被弃用。替换为defineClass(String, byte[], int, int) |   
             |  final Class<?> |  defineClass(String name, byte[] b, int off, int len) 将字节数组转换为类 Class的实例。 |   
             |  软件包 |  definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) 在此 ClassLoader中按名称定义一个包。 |   
             |  Class<?> |  findClass(String name) 找到具有指定 binary name的类。 |   
             |  String |  findLibrary(String libname) 返回本机库的绝对路径名称。 |   
             |  final Class<?> |  findLoadedClass(String name) 返回给定类 binary name如果装载机已记录由Java虚拟机作为与一类的初始化加载器 binary name 。 |   
             |  URL |  findResource(String name) 查找具有给定名称的资源。 |   
             |  Enumeration<URL> |  findResources(String name) 返回表示具有给定名称的所有资源的 URL对象的枚举。 |   
             |  final Class<?> |  findSystemClass(String name) 找到具有指定的 binary name的课程 ,并在必要时加载它。 |   
             |  软件包 |  getPackage(String name) 返回已由此类加载器或其任何祖先定义的 软件包 。 |   
             |  Package[] |  getPackages() 返回由此类加载器及其祖先定义的所有 Packages 。 |   
             |  final ClassLoader |  getParent() 返回委托的父类加载器。 |   
             |  URL |  getResource(String name) 查找具有给定名称的资源。 |   
             |  InputStream |  getResourceAsStream(String name) 返回读取指定资源的输入流。 |   
             |  Enumeration<URL> |  getResources(String name) 查找具有给定名称的所有资源。 |   
             |  static ClassLoader |  getSystemClassLoader() 返回委托的系统类加载器。 |   
             |  static URL |  getSystemResource(String name) 从用于加载类的搜索路径中查找指定名称的资源。 |   
             |  static InputStream |  getSystemResourceAsStream(String name) 打开阅读,从用于加载类的搜索路径中指定名称的资源。 |   
             |  static Enumeration<URL> |  getSystemResources(String name) 从用于加载类的搜索路径中查找指定名称的所有资源。 |   
             |  Class<?> |  loadClass(String name, boolean resolve) 使用指定的 binary name加载课程。 |   
             |  Class<?> |  loadClass(String name) 使用指定的 binary name加载课程。 |   
             |  static boolean |  registerAsParallelCapable() 将调用者注册为并行能力。 |   
             |  final void |  resolveClass(Class<?> c) 链接指定的类。 |   
             |  void |  setClassAssertionStatus(String className, boolean enabled) 在此类加载器及其中包含的任何嵌套类中,为指定的顶级类设置所需的断言状态。 |   
             |  void |  setDefaultAssertionStatus(boolean enabled) 设置此类加载器的默认断言状态。 |   
             |  void |  setPackageAssertionStatus(String packageName, boolean enabled) 设置命名包的包默认断言状态。 |   
             |  final void |  setSigners(Class<?> c, Object[] signers) 设置类的签名者。 |  | 
 
       
       |  From class  java.lang.Object  | 
 
      
    
 
     
     
     
     
     
     
    Public constructors
 
     
     
     BaseDexClassLoader
 
      
     
BaseDexClassLoader (String dexPath, 
                File optimizedDirectory, 
                String librarySearchPath, 
                ClassLoader parent) 
     构造一个实例。
 
      
       
        
        | Parameters | 
 
        
        | dexPath | String: the list of jar/apk files containing classes and resources, delimited byFile.pathSeparator, which defaults to":"on Android | 
 
        
        | optimizedDirectory | File: directory where optimized dex files should be written; may benull | 
 
        
        | librarySearchPath | String: the list of directories containing native libraries, delimited byFile.pathSeparator; may benull | 
 
        
        | parent | ClassLoader: the parent class loader | 
 
       
     
 
      
     
     
     
     
    Public methods
 
     
     
     findLibrary
 
      
     
String findLibrary (String name)
 
     返回本机库的绝对路径名称。 VM调用此方法来查找属于使用此类加载器加载的类的本机库。 如果此方法返回null ,则VM将按照指定为“ java.library.path ”属性的路径搜索库。
 
      
      
       
        
        | Parameters | 
 
        
        | name | String: The library name | 
 
       
     
 
      
       
        
        | Returns | 
 
        
        | String | The absolute path of the native library | 
 
       
     
 
      
     
     
     toString
 
      
     
String toString ()
 
     返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”此对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
 
     类Object的toString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
 
      
      
 getClass().getName() + '@' + Integer.toHexString(hashCode())
 
 
     
 
      
      
       
        
        | Returns | 
 
        
        | String | a string representation of the object. | 
 
       
     
 
      
     
    Protected methods
 
     
     
     findClass
 
      
     
Class<?> findClass (String name)
 
     用指定的binary name查找类。 该方法应该由类加载器实现覆盖,该实现遵循加载类的委托模型,并且在检查所请求的类的父类加载器后, loadClass方法调用。 默认实现抛出ClassNotFoundException 。
 
      
      
      
       
        
        | Returns | 
 
        
        | Class<?> | The resulting Class object | 
 
       
     
 
      
      
     
     
     findResource
 
      
     
URL findResource (String name)
 
     查找具有给定名称的资源。 类加载器实现应该重写此方法以指定在哪里查找资源。
 
      
      
       
        
        | Parameters | 
 
        
        | name | String: The resource name | 
 
       
     
 
      
       
        
        | Returns | 
 
        
        | URL | A URL object for reading the resource, or null if the resource could not be found | 
 
       
     
 
      
     
     
     findResources
 
      
     
Enumeration<URL> findResources (String name)
 
     返回表示具有给定名称的所有资源的URL对象的枚举。 类加载器实现应该重写此方法以指定从哪里加载资源。
 
      
      
       
        
        | Parameters | 
 
        
        | name | String: The resource name | 
 
       
     
 
      
      
     
     
     getPackage
 
      
     
软件包 getPackage (String name)
 
     返回给定包的包信息。 不幸的是,这个类的实例并没有真正的这个信息,并且作为一个不安全的ClassLoader ,根据规范,它甚至不需要。 然而,我们想要提供它,以使所有有希望的来电者myClass.getPackage().getName()快乐。 因此,我们在第一次请求时构造一个软件包对象,并用虚拟值填充大部分字段。 然后将软件包对象放入ClassLoader的包缓存中,以便下次看到相同的对象。 我们不为null参数或默认包创建软件包对象。
 
     我们有很少机会得到代表相同包的多个软件包对象:当包被分散在不同的JAR文件中时,会发生这种情况,这些JAR文件由不同的ClassLoader实例加载。 这是不太可能的,并且考虑到这整个事情或多或少是一种解决方法,可能不值得努力解决。
 
      
       
        
        | Parameters | 
 
        
        | name | String: the name of the class | 
 
       
     
 
      
       
        
        | Returns | 
 
        
        | 软件包 | the package information for the class, or nullif there is no package information available for it |