Java Android:在实体调用finalize时插入数据库

Java Android:在实体调用finalize时插入数据库,java,android,database,garbage-collection,finalize,Java,Android,Database,Garbage Collection,Finalize,我需要尽可能多地存储用户名和头像url以供其他使用,所以我在userinfo实体的finalize函数中插入数据库。这样做是不好的还是有任何问题,因为我认为当gc要收集对象时会调用finalize,所以在那里做任何事情都是不好的 代码: 是的,一般来说,实现终结器是一种不好的做法,因为它会减慢垃圾收集的速度,尤其是在您向数据库中插入某些东西时,这是一种缓慢的操作。因此,假设GC停止了整个世界,并且您要收集此对象的许多实例,那么您的应用程序将在更长的时间内不可用 还请注意,应该将终结器实现到tr

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

代码:


是的,一般来说,实现终结器是一种不好的做法,因为它会减慢垃圾收集的速度,尤其是在您向数据库中插入某些东西时,这是一种缓慢的操作。因此,假设GC停止了整个世界,并且您要收集此对象的许多实例,那么您的应用程序将在更长的时间内不可用

还请注意,应该将终结器实现到
try
/
finally
块中,以确保无论发生什么情况都调用超类的终结器,如下所示:

@Override
protected void finalize() throws Throwable {
    try {
        // Something here
    } finally {
        super.finalize();
    }
}

是的,一般来说,实现终结器是一种不好的做法,因为它会降低垃圾收集的速度,特别是在您将某些东西插入数据库时,这是一种缓慢的操作。因此,假设GC停止了整个世界,并且您要收集此对象的许多实例,那么您的应用程序将在更长的时间内不可用

还请注意,应该将终结器实现到
try
/
finally
块中,以确保无论发生什么情况都调用超类的终结器,如下所示:

@Override
protected void finalize() throws Throwable {
    try {
        // Something here
    } finally {
        super.finalize();
    }
}

请不要发布代码的截图。无法搜索图像,无法复制图像进行测试,并妨碍访问。取而代之的是,将相关代码包括在内。请不要发布代码的截图。无法搜索图像,无法复制图像进行测试,并妨碍访问。相反,应将相关代码包括在内。