2011-07-30 38 views
1

我在我的代碼中使用自定義數據庫類來管理我的數據庫並處理事務。每當我實例化它時,我都會將應用程序上下文傳遞給它的構造函數。閱讀Android開發人員網站上的文章,讓我懷疑自己是否正在做一些可能導致應用程序內存泄漏的內容。簡化的,我的代碼看起來是這樣的,第一關的活動:這段代碼可能會造成潛在的內存泄漏嗎?

public class MyActivity extends Activity 
    { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.somelayout); 

      Database db = new Database(getApplicationContext()); 
     } 

    } 

而且我的數據庫類(在一個單獨的文件)看起來是這樣的:

public class Database 
{ 

    Context context; 

    public Database(Context context) 
    { 
     this.context = context; 
    } 

    public DatabaseHelper extends SQLiteOpenHelper 
    { 
     // Pass the context to the constructor etc etc. 
    } 

} 

的代碼可能有錯誤,我寫的快速在記事本中。無論如何,這讓我擔心,當用戶離開活動時,db對象會保持上下文,從而無法花費大量資源。如果確實如此,我該如何避免這種情況?當不再需要時,有辦法摧毀和反對嗎?

回答

2

只要onCreate完成,db所引用的對象就有資格進行垃圾回收。所以這裏沒有問題。

如果您將dbDatabase.context轉換爲static字段,那麼您應該開始擔心。

+0

謝謝,花了我的腦海:) –

1

如果數據庫對象保存資源並未正確關閉,則可能會遇到問題。

如果可能的話停留在純SQL級別,並使用JDBC池來獲得處理這些事情的標準方式。