• Android 动态类加载


    Android程序可以通过动态类加载方法,在运行时动态生成对象,调用方法。

    在Android中可以动态加载,但无法像Java中那样方便动态加载jar. 

    原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。

    1. 首先生成被调用的dex文件:

    package com.dynamic;

    public interface IDynamic {
      public String helloworld();
    }

    package com.dynamic;

    public class IDynamicTest implements IDynamic{
      public String helloworld()
      {
        return "hello world";
      }
    }

    构造helloworld函数,将代码Export打包成1.jar文件,调用Android自带的dx工具,将1.jar文件编译成包含dex文件的test.jar。

    2. 在Android代码中,调用test.jar中的helloworld函数。

    public void onClick(View v) {

      button1.setText("LauClass(M1)");

      final File dexpathFile = new File("/data/app/test.jar");                                  // 指定jar文件位置

      DexClassLoader classLoader = new DexClassLoader(dexpathFile.getAbsolutePath(), "/data/app/", null, getClassLoader());   //生成classLoader

      try{

        Class libProvideClass = classLoader.loadClass("com.dynamic.IDynamicTest");                     //利用ClassLoader将类加载进来

        if (libProvideClass==null)

        {

          return ;

        }

        Object obj=libProvideClass.newInstance();                                     //利用得到的类生成实例对象

        Method methodInstance = libProvideClass.getMethod("helloworld", null);                        //获取对象的方法对象

        if(methodInstance==null)

        {

          finish();

        }

        Toast.makeText(secondClass.this, (String)methodInstance.invoke(obj,null), Toast.LENGTH_SHORT).show();        //触发helloworld方法

      } catch(Exception exception)

      {

        exception.printStackTrace();

      }

    }

    Related URL:

    http://my.oschina.net/Jerryking/blog/111575

    http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html

  • 相关阅读:
    oracle 递归查询 查询当前选中节点的所有子节点
    sql 常见操作
    【转】VS2008制作打包程序将安装路径写入注册表
    HTML字符集大全
    Oracle左连接,右连接
    Ubuntu下root用户和user用户如何进行相互切换
    【转】 vs2008 用文件部署生成的exe安装包
    C# 中out 和 ref 关键字的区别
    【转】vs2008安装部署程序时如何设置程序开机启动
    【转】vs2008安装部署工程制作教程
  • 原文地址:https://www.cnblogs.com/yulele/p/4355037.html
Copyright © 2020-2023  润新知