Как исправить ошибку «Активно несколько хранилищ данных»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как исправить ошибку «Активно несколько хранилищ данных»

Сообщение Anonymous »

У меня ошибка в проекте. Когда я использую хранилище данных в своем проекте, я получаю сообщение об ошибке.
Я не собираюсь создавать несколько хранилищ данных для своего проекта. Я хочу создать для него хранилище данных, но при запуске проекта получаю сообщение об ошибке
и я нашел много вопросов на StackOverflow.com, например:
1 – Git push приводит к ошибке "Аутентификация не удалась"
2 – Почему создается несколько хранилищ данных?
и т. д.
, но ошибка моего проекта не решена
как это исправить
это мой код в UserPreferences.kt
class UserPreferences @Inject constructor(context: Context) {
// private val dataStore = context.dataStore
private val Context.dataStore by preferencesDataStore(name = "userPrefs")
private val context = context.applicationContext

companion object {
private val ACCESS_TOKEN_KEY = stringPreferencesKey("accessToken")
private val REFRESH_TOKEN_KEY = stringPreferencesKey("refreshToken")
}

val getAccessToken: Flow
get() = context.dataStore.data.map {
it[ACCESS_TOKEN_KEY]?:""
}

suspend fun setRefreshToken(value: String) {
context.dataStore.edit { it[ACCESS_TOKEN_KEY] = value }
}

val getRefreshToken: Flow
get() = context.dataStore.data.map {
it[REFRESH_TOKEN_KEY]?:""
}

suspend fun setAccessToken(value: String) {
context.dataStore.edit { it[REFRESH_TOKEN_KEY] = value }
}
suspend fun clear() {
context.dataStore.edit { preferences ->
preferences.clear()
}
}

}

Ошибка:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.alpha.caller, PID: 11412
java.lang.IllegalStateException: There are multiple DataStores active for the same file: /data/user/0/com.example/files/datastore/userPrefs.preferences_pb. You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled).
at androidx.datastore.core.SingleProcessDataStore$file$2.invoke(SingleProcessDataStore.kt:168)
at androidx.datastore.core.SingleProcessDataStore$file$2.invoke(SingleProcessDataStore.kt:163)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.datastore.core.SingleProcessDataStore.getFile(SingleProcessDataStore.kt:163)
at androidx.datastore.core.SingleProcessDataStore.readData(SingleProcessDataStore.kt:380)
at androidx.datastore.core.SingleProcessDataStore.readDataOrHandleCorruption(SingleProcessDataStore.kt:359)
at androidx.datastore.core.SingleProcessDataStore.readAndInit(SingleProcessDataStore.kt:322)
at androidx.datastore.core.SingleProcessDataStore.readAndInitOrPropagateAndThrowFailure(SingleProcessDataStore.kt:302)
at androidx.datastore.core.SingleProcessDataStore.handleUpdate(SingleProcessDataStore.kt:281)
at androidx.datastore.core.SingleProcessDataStore.access$handleUpdate(SingleProcessDataStore.kt:76)
at androidx.datastore.core.SingleProcessDataStore$actor$3.invokeSuspend(SingleProcessDataStore.kt:242)
at androidx.datastore.core.SingleProcessDataStore$actor$3.invoke(Unknown Source:8)
at androidx.datastore.core.SingleProcessDataStore$actor$3.invoke(Unknown Source:4)
at androidx.datastore.core.SimpleActor$offer$2.invokeSuspend(SimpleActor.kt:122)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)



Подробнее здесь: https://stackoverflow.com/questions/723 ... res-active
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»