Android 的 SharedPreferences 中 commit() 和 apply() 的区别是什么?
简介
在构建 Android 应用程序时,我们经常会遇到需要在应用程序内部存储一些数据的情况,例如存储用户会话的应用程序。Android 提供了几种不同的方法来在 Android 应用程序中存储数据,例如 SQLite 数据库、SharedPreferences、Room 数据库等。每种数据存储方法都用于不同的数据存储目的。如果需要以表格形式存储数据,则建议使用 Room 数据库或 SQLite 数据库。
什么是 Android 中的 SharedPreferences?
Shared Preferences 是 Android 中一种数据存储类,它以键值对的形式存储数据。借助 Shared Preferences,我们可以将数据作为键值对存储在 Android 中,从而允许存储和检索基本数据类型。它是一个轻量级、持久性的数据存储,可用于存储应用程序级别的数据。它用于存储少量信息,例如用户偏好设置、应用程序设置以及其他少量数据,例如用户登录凭据、用户会话 ID 等。Shared Preferences 中有几种方法用于在 Android 应用程序中存储和检索数据,例如 commit()、apply()、put()、get() 等。在本文中,我们将重点介绍 Shared Preferences 中最常用的两种方法:commit() 和 apply()。
Commit() 和 apply() 是 SharedPreferences 类中使用的两种重要方法,用于将数据存储到偏好设置文件中。这两种方法都用于将数据存储到 Shared Preferences 文件中,但每种方法都有一些关键区别,需要理解。
Commit()
commit() 方法是将数据存储到 Shared Preferences 的传统方法。它是一个同步方法,这意味着它会阻塞主线程,直到数据存储到 Shared Preferences 中。这可能会导致用户体验延迟,因为该方法需要几毫秒才能完成。此外,commit() 方法必须返回一个布尔值,以指示数据是否成功存储。
Apply()
apply() 方法是在 API 级别 9 (Android 2.3) 中引入的。它是一个异步方法,这意味着它不会阻塞主线程,从而带来更好的用户体验。它还允许一次存储多个数据,与 commit() 方法相比更高效。与 commit() 方法不同,apply() 方法不返回布尔值,因此无法确定数据是否成功存储。
Commit 和 Apply 的区别
Commit() |
Apply() |
|---|---|
Commit 方法设置首选项的值并同步保存。 |
Apply 方法保存首选项的值并异步保存。 |
此方法的返回类型是布尔值。可能是真/假。 |
此方法的返回类型是 void。 |
此方法会阻塞主线程。 |
此方法不会阻塞主线程。 |
Commit 方法会提供较差的用户体验,因为此方法需要几毫秒才能完成。 |
由于 Apply 方法异步运行,因此不会影响用户体验。 |
Commit 方法返回 true 或 false,这将有助于指示数据是否已存储在 Shared Preferences 中。 |
Apply 方法返回 void,不会提供任何有关数据是否已存储在 Shared Preferences 中的信息。 |
结论
commit() 和 apply() 方法都用于将数据存储到 Shared Preferences 中。commit() 方法是一个同步方法,可能会导致用户体验延迟,而 apply() 方法是一个异步方法,效率更高,并且不会阻塞主线程。commit() 方法必须返回一个布尔值以指示成功,而 apply() 方法则不会。在使用它们存储数据之前,了解这两种方法之间的区别非常重要。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP