首页 > 解决方案 > 在 Account Manager 中为 Auth Token 创建实时数据

问题描述

我正在尝试为authTokenin创建实时数据AccountManager

这就是我获取身份验证令牌的方式。

suspend fun Fragment.getAuthToken(): String? {
    val am: AccountManager = AccountManager.get(activity)
    val accounts: Array<out Account> = am.getAccountsByType(getAccountType())
    var authToken: String? = null
    if (accounts.isNotEmpty()) {
        val account = accounts.first()
        withContext(Dispatchers.IO) {
            authToken = am.blockingGetAuthToken(account, getAccountType(), true)
        }
    }
    return authToken
}

根据文档,我应该这样做:

class StockLiveData(symbol: String) : LiveData<BigDecimal>() {
    private val stockManager = StockManager(symbol)

    private val listener = { price: BigDecimal ->
        value = price
    }

    override fun onActive() {
        stockManager.requestPriceUpdates(listener)
    }

    override fun onInactive() {
        stockManager.removeUpdates(listener)
    }
}

但是我不知道如何转换示例以匹配我的情况。

标签: javaandroidkotlinandroid-livedata

解决方案


根据另一个链接 ,您可以将实时数据构建器用于协程:

val token: LiveData<String> = liveData {
    val tokenValue = someYourFragment.getAuthToken() 
    emit(tokenValue)
}

推荐阅读