私はSQLiteにデータを格納するサービスを持っています。アプリケーションが閉じられたときにそのサービスを実行し続けたい。 (スワイプアウト)しかし、getInstance()は、アプリケーションが破棄されたときにnullを返します。アプリケーションを閉じた後でも、どうすればそれを生き続けることができますか?サービスでシングルトンSQLiteHelperを使用する
マイデータベースシングルトンクラス:
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);
}
}
個人的にそれを取ることはありませんが、おそらくあなたが得た例外は実際には例外メッセージではなくあなたのコードにハードコードされているので、あなたはおそらくdownvotedです。 –
「最初の問題」とはどういう意味ですか?あなたは "私にこの例外があります、なぜですか?"のように聞こえました。あなたが投稿したコードは、その理由はあなたの変数がnullであると思われるので、そうするようにコード化されているので例外がスローされます。 –