java - Android:在实体调用 Finalize 时插入数据库

标签 java android database garbage-collection finalize

我需要尽可能多地存储用户名和头像网址以供其他使用,因此我在 userinfo 实体的 Finalize 函数中插入数据库。这样是不好还是有什么问题,因为我认为当GC收集一个对象时会调用finalize,所以在那里做任何事情都是不好的。

代码:

enter image description here

enter image description here

最佳答案

是的,一般来说,实现终结器是一种不好的做法,因为它会减慢垃圾收集速度,特别是在您将某些内容插入到数据库中的情况下,这是一个缓慢的操作。因此,想象一下 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/

相关文章:

Javascript SQL 插入循环

排除关系数据库中相同记录的SQL语句

regex - 如何从字符串中提取前两位数字?

android - android函数内部泄漏 'setTextColor'

java - SearchView 图标显示两次

c# - 为什么基于堆栈的 IL 字节码中有局部变量

java - 使用 XPath 替换 XML 文件中的文本,同时保留格式

java - 如何通过java j2ee中的 Controller 设置外键?

java - 了解 IOexceptin()

android - appcompat-v7 工具栏菜单 - 选择颜色不影响文本背景