sdk需要获取sdk之外的参数,方法,甚至Class?

来源:互联网 发布:java实施工程师简历 编辑:程序博客网 时间:2024/06/06 08:29

1。 需要外部参数
可以用构造函数,或者set方法,在初始化的时候进行

2。需要外部方法
用回调方法实现

   //两个回调接口,分别用于拉取全局控制数据和单个activity的配置数据    public interface SyncConfigDataCallback    {        public JSONArray downloadGlobalData();        public JSONArray downloadPageData(String pageName);    }    public static SyncConfigDataCallback mSyncConfigDataCallback;    public static void setSyncConfigDataCallback(SyncConfigDataCallback SyncConfigDataCallback)    {        mSyncConfigDataCallback = SyncConfigDataCallback;    }    //在BifrostConfig中调用,用于全局参数的配置获取    public static void updateGlobalConfigData()    {            globalConfigJson = BFConfigCenterData.mSyncConfigDataCallback.downloadGlobalData();//            Log.d("tingxiang global config","  "+globalConfigJson.length());            if (globalConfigJson.length() > 0) {                globalConfigData = new BFGlobalConfigModuleList(globalConfigJson);            }    }
  BFConfigCenterData.setSyncConfigDataCallback(new BFConfigCenterData.SyncConfigDataCallback() {                    @Override                    public JSONArray downloadGlobalData() {                        JSONArray jsonData = null;                        jsonData = TMConfigCenterManager.getInstance().getConfigDataArray("Bifrost");                        return jsonData;                    }                    @Override                    public JSONArray downloadPageData(String pageName) {                        JSONArray jsonData = null;                        jsonData = TMConfigCenterManager.getInstance().getConfigDataArray("bifrost_" + pageName);                        return jsonData;                    }                });

3。 需要用到外部定义的class
注册外部类的class路径,在sdk中可根据这个路径找到这个类,注意在android 6。0的手机上,必须调用RegisterInvoker.getDeclaredConstructor().setAccessible(true);
否则会有权限问题

注册:

    BFInvokerMgr.registerBFInvoker(BFConstant.EVENT_SCREENSHOT_FEEDBACK, "com.tmall.wireless.application.bifrostinvoker.BFInvokerFeedback");                BFInvokerMgr.registerBFInvoker(BFConstant.EVENT_JUMP_URL, "com.tmall.wireless.application.bifrostinvoker.BFInvokerJumpUrl");

根据类名寻找,新建类对象

 BFInvoker invoker = null;            Class RegisterInvoker = null;            try {                RegisterInvoker = Class.forName(registeredInvokerClass.get(invokerType));            } catch (ClassNotFoundException e) {                e.printStackTrace();            }            try {                RegisterInvoker.getDeclaredConstructor().setAccessible(true);              invoker =  (BFInvoker) RegisterInvoker.newInstance();            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            } catch (NoSuchMethodException e) {                e.printStackTrace();            }            return invoker;
0 0
原创粉丝点击