知识点一:picasso的像素点比较高
被Glide加载的图片在质量上不如Picasso加载的图片,这是为什么?其实是因为
Glide的Bitmap默认的格式是RGB_565,而Picasso用的是ARGB_8888,所以虽
然质量上不如Picasso(其实在手机上也不明显),但是RGB_565格式的图片仅仅消
耗ARGB_8888格式图片一半的内存。
知识点二:android反射
/**
* 使用dexClassLoader 加载各个module的入口类
*/
private void dexClassLoader(String className, String env) {
Intent intent = new Intent(ActionManager.PACKAGE);
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
ResolveInfo resolveInfo = activities.get(0);
ActivityInfo activityInfo = resolveInfo.activityInfo;
String sourceDir = activityInfo.applicationInfo.sourceDir;
String dataDir = getApplicationInfo().dataDir;
String nativeLibraryDir = activityInfo.applicationInfo.nativeLibraryDir;
DexClassLoader dexcl = new DexClassLoader(sourceDir, dataDir, nativeLibraryDir, getClassLoader());
try {
Class<?> loadClass = dexcl.loadClass(className);
Constructor<?> constructor = loadClass.getDeclaredConstructor();
constructor.setAccessible(true);
Object instance = constructor.newInstance();
Method method = loadClass.getMethod("getSingleInstance", null);
method.invoke(instance, null);
Method initMethod = loadClass.getMethod("init", Application.class);
initMethod.invoke(instance, this); //传入Application的实例对象
Method initEnvMethod = loadClass.getMethod("initEnv", String.class);
initEnvMethod.invoke(instance, env);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}