当前位置: 首页 > article >正文

Android-Skin-Loader 换肤框架不支持多个activity同时换肤问题处理

在工作中由于有一个应用多个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();
        }
    }

 


http://www.kler.cn/a/558088.html

相关文章:

  • Ubuntu DeepSeek磁盘空间不够解决办法
  • linux有名管道
  • 鸿蒙开发技术指南:从入门到精通
  • LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
  • 技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率
  • netty基础知识梳理和总结
  • 数据库面试知识点总结
  • [Android]浏览器下载的apk文件无法识别无法安装问题
  • 《AI与NLP:开启元宇宙社交互动新纪元》
  • Django 连接(sqlserver)数据库方法
  • SHELL32!Shell_MergeMenus函数分析
  • 蓝桥杯拔河问题(前缀和与差分,multiset,区间冲突)
  • 基于Transformer的语音障碍分析方法
  • MAC快速本地部署Deepseek (win也可以)
  • 工业机器视觉的“眼睛”:如何利用镜头获取精准图像
  • [含文档+PPT+源码等]精品大数据项目-Django基于机器学习实现的市区游客满意度可视化分析系统
  • 【论文阅读】SAM-CP:将SAM与组合提示结合起来的多功能分割
  • Uniapp 设计思路全分享
  • DeepSeek R1/V3满血版——在线体验与API调用
  • Error [ERR_REQUIRE_ESM]: require() of ES Module