我正在使用DexClassLoader進行一些測試,以查看是否可以用新功能「更新」我的應用程序。目前我已經有了這種測試方法,它可以和testClass一起運行,並運行test()方法..我想知道的是,我怎樣才能「替換」或「更新」和已經存在的類。歡迎任何想法或其他建議。DexClassLoader - 添加功能
方法:
public static void loadExtLib(String pathDexFile, Context ctx) {
String temp = ctx.getDir("temp", 0).toString();
DexClassLoader classLoader = new DexClassLoader(pathDexFile,
temp, null, ctx.getClass().getClassLoader());
String testClass = "com.mystudio.myapp.TestClass";
Class<?> libProviderClass = null;
try {
libProviderClass = classLoader.loadClass(testClass);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
Method m = libProviderClass.getDeclaredMethod("test", null);
try {
m.invoke(libProviderClass, null);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
}
Log.v("loadClass", "loaded: " + testClass);
}
非常有用的信息就在這裏,fadden。非常感謝:) 我會嘗試通過添加具有更新功能的新類(具有不同名稱)的過程,並在新功能可用時替換調用它們的類/方法。 這應該工作,我希望。至少會試試:) – ole