我声明viewBinding在MainActivity类之外,如下所示:
private lateinit var binding: ActivityMainBinding
但我收到一个警告:
Do not place Android context classes in static fields (static reference to `ActivityMainBinding` which has field `tvTasksTitle` pointing to `TextView`); this is a memory leak
在以前的项目中,我总是这样声明viewBinding,没有收到任何警告。当然,我可以继续这个项目,但我想知道原因。我在网上搜索,但找不到合适的答案或解决办法。
如能提供任何帮助,将不胜感激。
发布于 2022-08-20 05:31:18
把它放在MainActivity里面,而不是外面。如果它在外部,它将持续超过活动,这将造成内存泄漏(不是可能,它将100% )。而且,这将导致一个活动的所有实例共享相同的绑定。这是一个bug- -它可能(实际上是预期的)一个活动的多个副本存在,这可能导致该活动的旧实例引用新实例的绑定,这可能导致不正确的行为和竞争条件。
解决方案只是让它成为MainActivity类中的一个变量,因此它是实例的一个属性。
https://stackoverflow.com/questions/73424266
复制相似问题