AndroidのonCreateメソッドとonOpenメソッドとSQLiteデータベース管理の間には多くの関係があります。
私はiOS開発者であり、Androidで使用できるように、ココアライブラリを(いわば)「翻訳」しようとしています。実行時にSQLiteデータベースを作成する必要があります。これは私が作成しているライブラリであるため、アクティビティはありません。アクティビティなしではDBを作成できないようですが、これは正しいですか?
sqlite dbを作成するには、基本的にライブラリ内のアクティビティは必要ありません。コンテキストが必要です!!、基本的に入力/パラメータのコンテキストを取得してデータベースを作成するメソッドをライブラリ/クラスに含めることができます。
このコンテキストは、アプリケーションアクティビティ、サービス、またはレシーバーから渡すことができます。
アクティビティなしでデータベースを開くことができない理由がわかりません。SQLiteOpenHelperを拡張する必要があります。
public class MyDatabase {
private final DatabaseHelper databaseHelper;
private SQLiteDatabase db;
private static final String DATABASE_NAME = "com.my.db";
private static final int DATABASE_VERSION = 1;
public MyDatabase(Context context) {
databaseHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//use db.execSQL to create the database
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// use db.execSQL to update (modify) the database
}
}
public SQLiteDatabase open() throws SQLException {
db = databaseHelper.getWritableDatabase();
return db;
}
}