调试时,我发现在这行代码中:
String profileId = ((GlobalApplicationClass) getApplication()).getProfileId();
在watch选项卡中,((GlobalApplicationClass) getApplication()).getProfileId()
返回正确的值。然而,在watch选项卡上,profileId是""
(就像它在GlobalApplicationClass中的初始值一样)。
这段代码运行正常,profileId被正确的值填充。
现在,我不明白为什么它没有人口。为什么调用函数返回正确的值,但随后将其初始化值传递给profileId变量?
我找到了问题所在。我会把答案贴出来,以防将来有人遇到类似的问题。但是在这行代码之后,我执行了一段代码,这段代码将在另一个线程上运行。
调试时,调试器不能正确地步进profileId的填充,因为它会步进到将在另一个线程上执行的代码块。
当该线程试图使用profileId时,它将把它作为"因为这将是线程开始运行时的值,以及线程中的代码需要使用它时的值。
解决方案是在profileId被填充后启动线程。