2016-12-19 18 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(); 
    } 
} 
相關問題