我正在使用新的 DataStore 将用户首选项保存在 Android 应用程序中。
我正在尝试为初次使用的用户展示介绍活动。
问题 - 使用数据存储保存首选项后,我检查是否已保存首选项 - 如果是 - 移至下一个活动。问题是 Intro Activity 在移动到下一个活动之前稍微显示,这绝对是一个糟糕的 UI/UX。
当我使用 SharedPreferences 时,这不会发生。
介绍活动
private var hasSeenIntro: Boolean = true
.......
//I also used a splash screen, but the activity still shows slightly.
setTheme(R.style.AppTheme_NoActionBar);
super.onCreate(savedInstanceState)
dataManager.hasSeenIntro.asLiveData().observe(this){
hasSeenIntro = it
if(hasSeenIntro){
val intent = Intent(this, RegisterOrLoginActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
finish()
}
}
数据管理器
private val dataStore = context.createDataStore("data_prefs")
companion object{
val HAS_SEEN_INTRO = preferencesKey<Boolean>("HAS_SEEN_INTRO")
}
suspend fun storeHasSeenIntro(intro: Boolean){
dataStore.edit {data->
data[HAS_SEEN_INTRO] = intro
}
}
val hasSeenIntro : Flow<Boolean> = dataStore.data.map {
it[HAS_SEEN_INTRO] ?: false
}