我想使用单例模式来保存我的 Android 应用程序的数据库和其他一些数据/方法。
我意识到反对单例的原因有很多,但对于本例我想使用它。
我对 UIApplication 进行了子类化,并在其中创建了一个名为 MyAppData 的数据类。
MyAppData 需要访问 SQLite 数据库。
当我创建数据库时,我需要传递一个上下文。我可以传递应用程序上下文,但它不会直接与 MyAppData 相关。
我不知道这是否会导致我的代码出现问题。
所以我的想法是让 MyAppdata 扩展 android.content.ContextWrapper。我认为我不应该扩展 Activity,因为它实际上不是一个 Activity,而是一个具有访问数据库方法的数据类。
我想知道如果我扩展 ContextWrapper ,代码中是否会缺少一些深层的东西,这些东西会导致以后出现大问题(内存泄漏等)。
这可能不是理想的方法(我已经考虑过其他选择),但我的目标是:
在 UIApplication 中有一个单例类,它可以封装数据库并可以从我的应用程序中的任何 Activity 中轻松检索。
预先感谢您的建议/警告/忠告。
最佳答案
子类android.database.sqlite.SQLiteOpenHelper
和android.app.Application
(后者在AndroidManifest.xml
中正确声明) .
现在,
public class MyApplication extends Application {
private static SQLiteOpenHelper openHelper;
@Override
public void onCreate() {
super.onCreate();
openHelper = new DbManager(this);
//
}
public static SQLiteDatabase getDB() {
return openHelper.getWritableDatabase();
}
}
然后有辅助 DAO 类来执行插入/更新/等。
这就是我在所有应用程序中使用的内容。
关于android - 如何使用数据库制作Android单例和自定义数据类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273107/