在工作中由于有一个应用多个acctivity显示的情况,但是框架不支持多个activity同时刷新,查看代码发现是LazySkinObserver这里有限制
解决方法:
在换肤方法调用之前增加反射方式将 mCurActivityRef 赋值为null让其强行走updateSkinForce方法 即可
下面是反射的修改方法:
public static void resetCurActivityRef() {try {Class<?> clazz = SkinActivityLifecycle.class;// 先获取 sInstance(静态变量)Field instanceField = clazz.getDeclaredField("sInstance");instanceField.setAccessible(true);Object sInstance = instanceField.get(null);if (sInstance != null) {// 获取 mCurActivityRef(实例变量)Field field = clazz.getDeclaredField("mCurActivityRef");field.setAccessible(true);field.set(sInstance, null);AppLog.d(TAG, "mCurActivityRef 已成功设为 null");} else {AppLog.e(TAG, "sInstance 为 null,无法重置 mCurActivityRef");}} catch (Exception e) {e.printStackTrace();}}