android - Android DFM 动态 FeatureModule 资源 NotFoundException
问题描述
在我们的应用程序中,我们开始使用动态功能模块 (DFM) 来获取大量资源。我们将大部分可绘制对象移动到 DFM 并在需要时加载它们。
用于使用提供者和应用程序上下文加载可绘制对象(如文档中所示),并且仅在加载 dfm 时才有效
val drawable = ContextCompat.getDrawable(applicationContext, DFM.getDrawableResID(m_drawableName));
DFM.getDrawableResID(m_drawableName) - 从模块返回资源 ID (DrawableRes)
在 Application 类中重写 attachBaseContext
override fun attachBaseContext(base: Context ) {
super.attachBaseContext(base)
SplitCompat.install(this)
}
在主模块 attachBaseContext 的 MainActivity 中也被覆盖
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(newBase)
SplitCompat.installActivity(this)
}
下载模块有效,下载后列表中有一个drawable。但是在应用程序重启后总是 -
No package ID 7e found for ID 0x7e010219
Fatal Exception: android.content.res.Resources$NotFoundException
Resource ID #0x7e0101e4
模块安装和文件列表从模块中获取没有问题......
解决方案
解决:
只有在该“会话”中安装后,我们才能使用应用程序上下文。重新启动应用程序和 SplitCompat.install()(在应用程序和活动中)后,所有 DFM 资源仅由活动上下文可用
推荐阅读
- reactjs - 全局设置语言环境时刻
- sql - 删除 SQL 查询中的重复代码
- parallel-processing - .Net Core Hangfire - 增加工人数量
- ios - 限制 AVCaptureVideoDataOutputSampleBufferDelegate 调用
- web-services - 对于超过 125 个并发用户,Websphere 连接池中最大连接数的理想值应该是多少?
- caffe - 一次迭代的延迟层输出
- python - 合并 2 个数据框
- python - 正则表达式查找五个连续的辅音
- java - 在 Runnable 中无法使用“this”识别的实例变量
- sql - PowerShell 使用不同的域帐户运行 powershell 函数