debugging Android Studio缓存布尔属性

vkc1a9a2  于 2023-04-30  发布在  Android
关注(0)|答案(2)|浏览(88)

自从Android Studio Electric Eel以来,我在运行应用程序的调试版本时遇到了这个相当危险的bug几次。.
正如您所看到的(抱歉代码被删失),在第2行,当我在调试时,IF条件应该失败,因为第一个值为false。...
第2行的“Model.skipCheck”是Model对象的一个只读属性,如果我运行的是调试版本的应用程序,我可以用它来跳过一些检查。
我认为在构建调试版本时,IDE会缓存该属性,因为我通常使用该属性为true运行应用程序。

通常我会对这一行做一个小的、不相关的修改来修复这个问题,所以也许编译器会再次编译这部分代码,然后它就可以正常工作了。.
但这种问题永远不应该发生,因为它可能非常危险,很难被发现。您是否遇到过此问题?这是一个已知的bug吗?有什么方法可以防止这种行为吗?
我正在运行Android Studio Flamingo|2022.2.1

编辑:

object Model {
    const val skipCheck = false
    var preventLogin = false
    var blacklisted: List<User>? = null
}
x9ybnkn6

x9ybnkn61#

我只是有同样的错误,这是很难复制。它发生了,这是多线程的问题。我的变量是从另一个线程更新的,这就是为什么我得到了错误的行为。
Android Studio不管理对象和变量,因为所有对象和原语都存储在JVM的Heap和Stack内存中。
所以我能给予你的唯一建议就是给Model的setter方法设置一个断点。变量,以便弄清楚如何以及何时将false值设置到此变量。

bqujaahr

bqujaahr2#

结果发现并行运行存在问题。.
取消选中**编辑配置-〉[模块名] -〉“允许并行运行”**解决了我的问题

相关问题