2011-07-30 41 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池来获得处理这些事情的标准方式。