在 Android 10中不推荐使用 PreferenceManager getDefaultSharedPreferences。如何替换它?
PreferenceManager getDefaultSharedPreferences
引用自PreferenceManager 文档:
PreferenceManager
这个类在API级别29中已弃用 使用AndroidX 喜欢图书馆在所有设备上保持一致的行为。有关使用AndroidX首选项库的更多信息,请参见设置
是的,它被弃用了。
使用AndroidX首选项库在所有设备上保持一致的行为。有关使用AndroidX首选项库的更多信息,请参阅设置。
跟着我——
你可以使用Android 10支持库版本的PreferenceManager,即androidx.preference.PreferenceManager而不是android.preference.PreferenceManager。
androidx.preference.PreferenceManager
android.preference.PreferenceManager
记住在你的build.gradle中添加以下内容:
implementation 'androidx.preference:preference:1.2.0'
包preference提供了androidx PreferenceManager:
preference
androidx
Java: implementation "androidx.preference:preference:1.1.1"
implementation "androidx.preference:preference:1.1.1"
芬兰湾的科特林:implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.preference:preference-ktx:1.1.1"
另请参阅PreferenceFragmentCompat,它是当前要使用的PreferenceFragment类。
PreferenceFragment
如果你只是保存和检索键值对,你可以替换:
prefs = PreferenceManager.getDefaultSharedPreferences(this);
:
prefs = getSharedPreferences( "my.app.packagename_preferences", Context.MODE_PRIVATE);
确保为新实现使用正确的文件名,否则您的用户将无法访问getDefaultSharedPreferences(!)保存的所有内容。下面将得到getDefaultSharedPreferences使用的文件名:
getPackageName() + "_preferences"
implementation 'androidx.preference:preference-ktx:1.1.1'
Configuration.getInstance().load(this, androidx.preference.PreferenceManager.getDefaultSharedPreferences(this))
你可以在应用级gradle中导入这个库
类文件PrivateSharedPreferences;
class PrivateSharedPreferences(context: Context) { private val file = "com.example.com_shared" private val key = "private_key" private var sharedPreferences = context.getSharedPreferences(file, Context.MODE_PRIVATE) private val editor = sharedPreferences.edit() fun save(ok: Boolean) { editor.putBoolean(key, ok) editor.apply() } fun read() : Boolean { return sharedPreferences.getBoolean(key, false) }
}
从片段或适配器读取;
PrivateSharedPreferences(context).read()
保存
PrivateSharedPreferences(context).save(true)
使用Jetpack数据存储,这是一个数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore使用Kotlin协程和Flow来异步、一致地存储数据。 和事务性。< / p >
如果您当前正在使用SharedPreferences存储数据,请考虑
设置
dependencies { implementation "androidx.datastore:datastore:1.0.0" }
它还支持RxJava2 &RxJava3。