【发布时间】:2013-01-31 00:19:23
【问题描述】:
我有一个 SQLite 数据库,它与扩展 Activity 的主类不同。
我注意到有两种设置数据库的方法。一种方法是将它放在主 Activity 类中,无论是在类中还是作为嵌套的子类。第二种方法是放在单独的类中。
单独的类看起来更好,但是有一个缺点。每次你想做某事时,你都必须在主活动类中创建它的一个实例。我读到在 Android 中实例化对象很昂贵,应该避免。
尽管如此,我宁愿将数据库作为一个单独的类。实例化对象的成本是否足以让将数据库放在同一个类中更划算?
SQLite 数据库的单独类示例:不完整的伪代码
public class SQLiteDB {
private static class DbHelper extends SQLiteOpenHelper{
// db helper methods
}
// methods for DB, like get, set, and others
public void openDatabase(){ }
public void closeDatabse(){ }
public void insertRecord(String record){ }
}
main Activity 中的示例使用:incompete psudo-code
public class Main extends Activity{
// every time I want to use it I must instantiate an object for the database class
// many instances of SQLiteDB object created, garbage collector works hard
SQLiteDB mDatabase = new SQLiteDB();
openDatabase();
insertRecord("insert this");
closeDatabase();
}
【问题讨论】:
-
可以在
onCreate()中实例化一次,在onDestroy()中关闭数据库。 -
在内存使用和效率方面是否更好?在我的代码中多次实例化时?
-
你不应该实例化一个新的 SQLiteDB 对象,你会请求已经设置好的数据库。你应该看看 SQLiteOpenHelper。使用该类,您请求获取当前数据库,以便您没有正在使用的多个不同数据库
-
@zabawaba 请注意,
SQLiteDB有一个扩展SQLiteOpenHelper的内部类。 -
@Kevik 你好,我添加了一些建议,看看吧。
标签: android database sqlite class instance