Anko DBHelper Предупреждение об утечке памяти в одноместном / дополнительном контексте
Я пытался использовать Anko DBHelper наследовать ManagedSQLiteOpenHelper ( стандартный пример из документов Anko) в удовольствие onCreate() Я хочу вставить некоторые строки по умолчанию. Данные строк, которые я получаю от R.string.
db.insert(
TABLE_NAME_CATEGORY,
"name" to mContext.getString(R.string.db_category_default),
"color" to "#FF6677"
)
Это работает, но я получил (в Android Studio) предупреждение об утечке памяти в строке:
private var instance: DbHelper? = null
Больше кода от DbHelper.kt:
class DbHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, DB_NAME, null, DB_VERSION) {
private val mContext : Context = ctx
companion object {
private var instance: DbHelper? = null
@Synchronized
fun getInstance(ctx: Context): DbHelper {
if (instance == null) {
instance = DbHelper(ctx.applicationContext)
}
return instance!!
}
}
override fun onCreate(db: SQLiteDatabase) {
В extension.kt у меня есть
val Context.database: DbHelper
get() = DbHelper.getInstance(applicationContext)
Как я могу избежать этой потенциальной утечки памяти с возможностью использования R.string.db_category_default внутри DbHelper onCreate().
Я также использую App.kt
class App : Application() {
может быть, это хорошее место для создания экземпляра DbHelper без создания синглтона (объекта-компаньона) в DbHelper? Или использовать WeakReference?
Я видел, что похожий вопрос повторяется, но, к сожалению, я не нашел ответа, который смог бы реализовать:(
спасибо за ваше время и извините за довольно хаотичный вопрос.