将访问令牌存储在 SavedStateHandle 中的问题是我们将表示层与数据层耦合,因为访问令牌的管理是数据层的任务。
我没有发现变量方法有太多问题,但只是想到使用 SavedStateHandle 作为一种可能的方法。
最佳方法:存储库中的内存缓存 使用内存变量将访问令牌存储在存储库中:
class TokenRepository {
private var accessToken: String? = null
fun getAccessToken() = accessToken
fun saveAccessToken(token: String) { accessToken = token }
fun clearAccessToken() { accessToken = null }
}
在您的 ViewModel 中,与存储库交互:
class MyViewModel(private val tokenRepository: TokenRepository) : ViewModel() {
fun getToken() = tokenRepository.getAccessToken()
fun setToken(token: String) = tokenRepository.saveAccessToken(token)
}
为什么有效:
SavedStateHandle 进行令牌存储。仅将其用于特定于 UI 的状态。