我第一次在Kotlin制作具有MVP设计模式的项目。为什么我有java.lang.OutOfMemoryError
。
这是我的调试器错误:https://pastebin.com/U1nwjaf6
这是我的课程DbManager
:https://pastebin.com/KRpa2eRF
这是我的课程LoginPresenter
:https://pastebin.com/Vryf0kBH
我是使用Kotlin制作应用程序的初学者。 请帮助我。
答案 0 :(得分:0)
由于StackOverflow,您得到了这个:)
正在循环创建DBManager和LoginPresenter实例,并导致这种情况,您应该将实例创建移到某个方法中
答案 1 :(得分:0)
欢迎使用StackOverflow!
一些提示: 您应该发布与代码相关的所有内容。人们可以更轻松地帮助您并提供更好的答案。您还应该在问题本身中粘贴代码,而不是提供指向pastebin的链接。仅当代码太大时,才使用pastebin之类的服务。这里不是这种情况(但是您对错误消息的处理正确,它很大)。
现在,解决问题本身。
根据错误消息,您似乎正在实例化类DbManager
。此类在您的LoginPresenter
实例化您的其他课程:
class DbManager
{
...
val loginPresenter: LoginPresenter = LoginPresenter()
...
}
LoginPresenter
将实例化类DbManager
:
class LoginPresenter
{
...
val dbManager: DbManager = DbManager()
...
}
DbManager
创建LoginPresenter
,创建DbManager
,创建LoginPresenter
,创建...
在这里看到图案吗?它使用递归创建一个无限循环,该循环将创建类,直到耗尽内存。因此,错误。
当我只有这部分代码时,很难告诉你应该做什么。但是,我认为应该只在全局范围内实例化一次DbManager
类一次,并在每次与之交互时都使用该实例。