【发布时间】:2016-03-30 17:50:37
【问题描述】:
我有一个在 SQLite 中存储数据的服务。我希望该服务在应用程序关闭时继续运行。 (刷出)但是 getInstance() 在应用程序被销毁时返回 null。即使在我的应用程序关闭后,我怎样才能让它保持活力?
我的数据库单例类:
public class DbManager {
private static DbManager instance;
private CipherDbHelper dbHelper;
private DbManager() {
}
private DbManager(Context context, String password) {
SQLiteDatabase.loadLibs(context);
dbHelper = new CipherDbHelper(context, password);
}
public static void init(Context context, String password) {
instance = new DbManager(context, password);
}
public static DbManager getInstance() {
if (instance == null) {
Log.e("DbManager", "Can't access DbManager : instance is null.")
}
return instance;
}
//Closing
public void closeDatabase() {
dbHelper.close();
dbHelper = null;
instance = null;
}
public <D extends Dao<T, String>, T> D getDAO(Class<T> clz) throws SQLException {
return dbHelper.getDao(clz);
}
}
【问题讨论】:
-
不要个人认为,但您可能会被否决,因为您得到的异常实际上是硬编码在您的代码中,而不是实际的异常消息。
-
“初始问题”是什么意思?你让它听起来像“我得到了这个例外,为什么?”而且您发布的代码似乎是因为您的变量为空,因此抛出异常是因为它被编码为这样做。
标签: java android sqlite android-service intentservice