使用Kotlin在Android应用中处理数据存储偏好
#编程 #教程 #android #androiddev

本教程中,我将向您展示如何使用数据存储首选项将数据保存在您的Android应用程序中,而不是具有共享偏好的旧方法。

我看到很多人不知道如何使用数据存储,他们认为这太困难了,所以在本文中,我将解释数据存储中的所有内容,以使您更容易,因此请保存此帖子并专注于我ð


什么是数据存储偏好?

数据存储是一种数据存储解决方案,它允许您使用协议缓冲区存储键值对或键入对象。数据存储使用Kotlin Coroutines和Flow将数据异步,一致和交易存储。

我知道您不了解上下文,但现在开始!


在本文中,我们将创建一个简单的应用程序,可以保存用户名和电子邮件地址。
app preview

让我们现在开始½


1。在Android Studio上创建一个新项目。

2。打开build.gradle文件并添加库实现:

google developers

查看库的最新版本


3。例如,创建一个名为DataStoreManager的新类,并创建init of dataStore:

我们需要在这里停止以了解以前的代码正在发生的事情。

dsInit

查看此图像,让我们解释一下:
1-这是我们将使用它在此数据存储名称上进行操作的数据存储pref的名称。
2-第二个是数据存储名称,例如,它就像SQL一样的数据库名称,我们将使用此名称存储数据。


4。现在,让我们创建将在我们创建的数据存储中保存数据的密钥:

在这里,我已经为商店用户名创建了两个键,另一个将存储电子邮件地址。


现在我们准备在活动/片段中使用数据存储。

我创建了一个简单的应用程序,其中包含两个EditTexts和两个按钮和两个将显示保存数据的文本视图,您可以在GitHub上找到示例项目。


5。现在打开您的活动并创建一个暂停乐趣,该乐趣将使我们的数据从EditTexts中保存:

等待,这里发生了什么?

首先,数据存储仅在suspend funCoroutineScope内运行,所以这就是为什么我创建了暂停乐趣的原因。

之后,我已经创建了我们通过致电以前声明的用户实例:

user.edit { usrData ->

}

usrdata是一个价值参数,您可以选择任何名称,因为它是lambda表达式。


和在user.edit表达式内部,我添加了我们之前创建的键,以保存名称和电子邮件:

user.edit { usrData ->
    usrData[DataStoreKeys.USER_NAME] = name
    usrData[DataStoreKeys.EMAIL] = email
}


现在您已经成功地使用数据存储了数据,这很简单吗?


6。让我们创建一个新功能,可以获取保存的数据并将其显示在我们的UI中:

解释:
正如我们在添加用户实例之前所解释的那样 ?: "none" 检查数据存储返回null是否null检查将返回“无”值。

我们知道,我们可以通过用于保存数据的相同键来检验数据,因此您将再次使用它再次检索数据:

user.data.collect { usrData ->
    val name = usrData[DataStoreKeys.USER_NAME] ?: "none"
    val email = usrData[DataStoreKeys.EMAIL] ?: "none"

    // you can use $name variable or $email anywhere
}

正如我在添加 ?: "none" 之前告诉您的那样


7。最后一步是创建将删除保存数据的函数:

解释:
很简单,只需使用用户实例,然后使用user.edit访问数据存储并调用usrData.clear()

user.edit { usrData ->
    usrData.clear()
}


您可以在CoroutineScope(Dispatchers.IO)中使用所有这些功能:

CoroutineScope(Dispatchers.IO).launch {
    getUserData()  //get data suspend fun
}


这就是今天的全部,感谢您的阅读,请分享并关注更多:)




完整的主动式代码:


资源:
https://developer.android.com/topic/libraries/architecture/datastore