gre*_*egm 1 android dagger dagger-2
通常在 Android 代码中,我们使用这种模式将数据存储在 Application 对象中,然后通过转换访问它,如下所示:
((MyApplicationObject)getApplication()).getDaggerComponent()
Run Code Online (Sandbox Code Playgroud)
getApplication()应该总是MyApplicationObject因为我已经在AndroidManifest.xml. 但是,当您部署此代码时,有时它会导致 aClassCastException而我们得到一个不同的对象。
怎么会这样?
此问题的正确解决方法是什么?
已在评论中解决:这是一个 Android 错误,与 Dagger 无关。
谢谢你的链接!98% 的崩溃来自 Android 7.0,0.2% 来自 Android 7.1。在链接中,@google 工程师说他们改进了 7.0 中的主要问题,但没有完全修复它。–格雷姆
请参阅此公开的 Google IssueTracker 链接,#37137009:java.lang.ClassCastException:无法将 android.app.Application 转换为 com.xxx.xxApplication(ctate 在#17 中的评论):
是的,这是一个已知问题;并且在 7.1 中得到了很大程度的解决。7.1 中仍有一些边缘情况会导致类似的情况——正如您从分析中看到的那样——但机会窗口要窄得多,而 Android 8 也解决了这些问题。
不幸的是,目前似乎没有太多解释或官方解决方法,但至少该问题主要限于 Android 7.0。
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |