我需要尽可能多地存储用户名和头像网址以供其他使用,因此我在 userinfo 实体的 Finalize 函数中插入数据库。这样是不好还是有什么问题,因为我认为当GC收集一个对象时会调用finalize,所以在那里做任何事情都是不好的。
代码:
最佳答案
是的,一般来说,实现终结器是一种不好的做法,因为它会减慢垃圾收集速度,特别是在您将某些内容插入到数据库中的情况下,这是一个缓慢的操作。因此,想象一下 GC 执行了 stop-the-world,并且您有该对象的许多实例需要收集,您的应用程序将在较长一段时间内无法使用。
另请注意,终结器应实现到 try
/finally
block 中,以确保无论发生什么情况都会调用父类(super class)的终结器,如下所示:
@Override
protected void finalize() throws Throwable {
try {
// Something here
} finally {
super.finalize();
}
}
关于java - Android:在实体调用 Finalize 时插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221803/