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;