2016-12-19 19 views
1

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

代码:

enter image description here

enter image description here

+0

请不要发布的代码截图。图像不能被搜索,不能被复制用于测试,并妨碍可访问性。 相反,请将相关代码添加为[格式化文本](http://stackoverflow.com/help/formatting)。 – Meyer

回答

0

是一般来讲,这是一个不好的做法,实现一个终结只要你插入的东西它会减慢垃圾收集,尤其是在你的情况进入数据库,这是一个缓慢的操作。所以想象一下,GC确实是一个“停止世界”,并且你有很多这个对象的实例需要收集,你的应用程序将在较长时间内无法使用。

也请注意,一个终结应该落实到一个try/finally块,以确保超类的终结被称为无论发生什么情况,如下:

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