函数返回值,但它返回的变量不保存该值。为什么?



调试时,我发现在这行代码中:

String profileId = ((GlobalApplicationClass) getApplication()).getProfileId();

在watch选项卡中,((GlobalApplicationClass) getApplication()).getProfileId()返回正确的值。然而,在watch选项卡上,profileId是""(就像它在GlobalApplicationClass中的初始值一样)。

这段代码运行正常,profileId被正确的值填充。

现在,我不明白为什么它没有人口。为什么调用函数返回正确的值,但随后将其初始化值传递给profileId变量?

我找到了问题所在。我会把答案贴出来,以防将来有人遇到类似的问题。但是在这行代码之后,我执行了一段代码,这段代码将在另一个线程上运行。

调试时,调试器不能正确地步进profileId的填充,因为它会步进到将在另一个线程上执行的代码块。

当该线程试图使用profileId时,它将把它作为"因为这将是线程开始运行时的值,以及线程中的代码需要使用它时的值。

解决方案是在profileId被填充后启动线程。