Итак, я добавил в свой класс API контекст, который извлекает данные из Firebase. Если поиск не удается, я возвращаю строку, полученную из моих ресурсов. Мне просто интересно, скажем, фрагмент или деятельность была внезапно уничтожена. Не получу ли я исключение ResourcesNotFoundException?
* 1003 Е.Г. *
Я восстановил данные> Заблокировал экран> Сбой при получении> (возможное исключение ResourceNotFoundException)?
Если это так, тогда было бы хорошо создать StringFactory в AndroidViewModel и использовать applicationContext для получения String
или
Просто полностью вернуть постоянную переменную, которую получит наблюдатель, и затем позволить наблюдателю получить доступ к контексту, чтобы получить нужную мне строку из ресурсов?
Вот мои занятия ниже.
interface BaseApi<T> {
val process: MutableLiveData<Response<T>>
}
class AccountApi(val context: Context, val store: FirebaseFirestore) : BaseApi<AccountDocument> {
override val process: MutableLiveData<Response<AccountDocument>> = MutableLiveData()
fun getAccountDocument(email: String): LiveData<Response<AccountDocument>> {
val collection = store.collection("accounts")
collection.document(email)
.get()
.addOnSuccessListener { task ->
process.value = Response<AccountDocument>(true).data(task.toObject(AccountDocument::class.java))
}
.addOnFailureListener {
process.value = Response<AccountDocument>(false).message(context.getString(R.string.account_does_not_exist))
}
return process
}
}
data class Response<T>(
val isSuccessful: Boolean = false
) {
private var _message: String = ""
private var _data: T? = null
fun message(message: String): Response<T> {
_message = message
return this
}
fun getMessage() = _message
fun data(data: T?): Response<T> {
_data = data
return this
}
fun getData() = _data
}