首先,反射是框架的灵魂,Java框架底层都是用反射机制+xml配置等来实现的。
什么是反射?
反射机制是在运行状态中,它为Java提供一种“操作对象”的能力,在运行状态下,通过Class文件对象,可以调用到任何类里面的属性、方法、以及构造方法,包括私有的,所有的类在反射机制面前都是透明的
自己的概括:通过Class文件对象可以看到这个类里面的所有东西,并且可以使用和修改
//参考这个,是framework的同事集成了方法到PowerManager ,这个时候使用直接反射调取他集成类里的方法就好了
public static boolean isNeedOptimizeRefreshRate() {
//boolean bNeedOptimize =pm.needOptimizeRefreshRate();
PowerManager pm = (PowerManager) mContext.getSystemService(PowerManager.class);
boolean needRefresh = false;
Class<?> aClass = null;
try {
//1.获取class类
aClass = Class.forName("android.os.PowerManager");
//2.获取class类中你需要调用的方法
Method methodClear = aClass.getMethod("needOptimizeRefreshRate");
//3.得到的方法.invoke(你需要使用的对象)
Object refreshResult = methodClear.invoke(pm);
System.out.println("needOptimizeMemory2+OptimizeResult===" + refreshResult);
needRefresh = (boolean) refreshResult;
return (boolean) refreshResult;
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e4) {
e4.printStackTrace();
}
return needRefresh;
}