zoukankan      html  css  js  c++  java
  • Android系统,动态找出一个包下所有的类

        最近在写一个android应用,由于针对不同机型功能很不同,为了隔离变化,希望将各项功能插件化,通过编译开关来控制不同版本的功能,而不是在代码中通过逻辑来判断。

        我想了一个办法,用表驱动的方法,结合插件类的静态代码块自注册。但这就需要找到固定包下的所有类,然后主动初始化这些类,执行静态代码块。下面是运行时找出一个包下所有类的方法

       private static String[] getC<span style="font-size:18px;">lasses</span>FromPackage(Context context<span style="font-size:18px;">,String packageName</span>) {
            ArrayList<String> classes = new ArrayList<String>();
            try {
                DexFile df = new DexFile(context.getPackageCodePath());
                Enumeration<String> entries = df.entries(); 
                while (entries.hasMoreElements()) {
                    String className = (String) entries.nextElement();
                    if (className.contains(packageName)) {
                        classes.add(className);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return classes.toArray(new String[]{});
        }


  • 相关阅读:
    线程、协程、Goroutine的区别和联系
    Docker是如何实现跨平台的等问题
    Docker容器与虚拟机有什么区别?
    带www和不带www的域名有什么区别
    netty 入门前阅读
    netty 入门示例
    thingsboard 入门教程
    RSAUtil 工具类
    java zip 打包
    redis 详细讲解
  • 原文地址:https://www.cnblogs.com/yuanchongjie/p/4448357.html
Copyright © 2011-2022 走看看