1

我正在使用新的 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
}
4

0 回答 0