我正在寻找一种方法,从另一个非活动类和所有的教程,所以我发现到目前为止的问题,是反对的。
为什么?
方法openOrCreateDatabase只能从服务或活动调用,或者我可以将其作为静态方法调用。
但是,此方法的第二个参数需要openOrCreateDatabase,在大多数教程中是:SQLiteDatabase.openOrCreateDatabase。我不能使用非活动类的CursorFactory。有些人建议使用MODE_PRIVATE,但我想避免这样的依赖性,即从我想使用db的每个活动传递MODE_PRIVATE
在所有活动中,在一个类中只有一个db连接和db处理的最佳方法是什么?

最佳答案

您是否可以通过singleton访问您的SQLiteDatabase

private static DatabaseHelper sInstance = null;

public static synchronized DatabaseHelper getInstance(Context context) {

    if (sInstance == null) {
        sInstance = new DatabaseHelper(context.getApplicationContext());
    }
    return sInstance;
 }

private DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

如果是这样,那么上面仍然需要一个Context参数,但是如果您不愿意传递一个参数,那么可以使用这个technique
public class App extends Application {

    private static App instance;

    public static App get() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }
}

因此您可以使用DatabaseHelper.getInstance(App.get());访问数据库

10-04 18:14