ClassCastException:Application对象不是我的自定义应用程序对象

问题描述 投票:0回答:1

通常在Android代码中,我们使用这种在Application对象中存储数据的模式,然后通过强制转换来访问它:

((MyApplicationObject)getApplication()).getDaggerComponent()

getApplication()应该始终是MyApplicationObject因为我已经在AndroidManifest.xml中指定了它。但是,当您部署此代码时,有时它会导致ClassCastException,而我们会得到一个不同的对象。

怎么会这样?

这个问题的正确解决方法是什么?

android dagger-2 dagger
1个回答
3
投票

评论中已解决:这是一个Android bug,与Dagger无关。

谢谢你的链接! 98%的崩溃来自Android 7.0,其中0.2%来自Android 7.1。在链接中,一位@google工程师说他们在7.0中的主要问题上做了改进,但没有完全修复它。 - gregm

请参阅此公开的Google Issue Tracker链接,qazxsw poi(州政府在qazxsw poi中的评论):

是的,这是一个已知问题;并在7.1中得到了解决。 7.1中仍然存在一些可能导致类似情况的边缘情况 - 正如您从分析中看到的那样 - 但机会窗口要窄得多,而Android 8也解决了这些问题。

不幸的是,暂时似乎没有太多的解释或官方解决方法,但至少问题主要限于Android 7.0的范围。

© www.soinside.com 2019 - 2024. All rights reserved.