这是一些示例代码,说明了三种可能的方法。这些将允许在整个应用程序中访问数据库。
方法#1:让SQLiteOpenHelper为静态数据成员
这不是完整的实现,但是应该为您提供如何DatabaseHelper
正确设计类的好主意。静态工厂方法可确保在任何时候仅存在一个DatabaseHelper实例。
public class DatabaseHelper extends SQLiteOpenHelper {
private static DatabaseHelper mInstance = null;
private static final String DATABASE_NAME = "databaseName";
private static final String DATABASE_TABLE = "tableName";
private static final int DATABASE_VERSION = 1;
private Context mCxt;
public static DatabaseHelper getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new DatabaseHelper(ctx.getApplicationContext());
}
return mInstance;
}
private DatabaseHelper(Context ctx) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.mCtx = ctx;
}
}
方法2:使用ContentProvider提取SQLite数据库
这是我建议的方法。其一,新的CursorLoader
类需要ContentProvider
S,所以如果你想要一个活动或片段来实现LoaderManager.LoaderCallbacks<Cursor>
与CursorLoader
(我建议你利用的,这是不可思议的!),你需要实现ContentProvider
你的应用程序。此外,您不必担心使用ContentProviders创建Singleton数据库帮助程序。只需getContentResolver()
从Activity中调用,系统便会为您处理所有事情(换句话说,无需设计Singleton模式来防止创建多个实例)。
希望这可以帮助!