DataStore là một API hiện đại thay thế SharedPreferences
, được thiết kế để lưu trữ dữ liệu cục bộ trong Android với hiệu suất cao.
Tại sao nên dùng DataStore?
- Thân thiện khi giao tiếp với UI: Chạy trên background thread, không gây lag như
SharedPreferences
. - Data Safe: Với Proto DataStore, dữ liệu được kiểm tra kiểu ngay từ lúc biên dịch.
- Hỗ trợ Flowable: Cung cấp luồng dữ liệu đồng bộ, luôn cập nhật dữ liệu mới nhất.
- Hiệu suất cao: Tận dụng Kotlin Coroutines, xử lý nhanh và mượt mà.
- Khả năng mở rộng: Hỗ trợ dữ liệu phức tạp với cấu trúc Protobuf.
Các loại DataStore
- Preferences DataStore: Lưu trữ key-value đơn giản, giống
SharedPreferences
. - Proto DataStore: Lưu trữ dữ liệu phức tạp với schema định nghĩa qua file
.proto
.
Example
val Context.dataStore by preferencesDataStore(name = "settings") // Lưu dữ liệu suspend fun saveSetting(context: Context, isDarkMode: Boolean) { val DARK_MODE_KEY = booleanPreferencesKey("dark_mode") context.dataStore.edit { it[DARK_MODE_KEY] = isDarkMode } } // Đọc dữ liệu fun getDarkModeSetting(context: Context): Flow<Boolean> { return context.dataStore.data.map { it[booleanPreferencesKey("dark_mode")] ?: false } }
Khi nào nên sử dụng?
- Preferences DataStore: Khi lưu trữ dữ liệu nhỏ, đơn giản (cài đặt app).
- Proto DataStore: Khi cần lưu dữ liệu phức tạp hoặc yêu cầu data safe.
Hãy cùng thử nghiệm DataStore để nâng cấp hiệu suất và khả năng lưu trữ cho ứng dụng Android của bạn nhé.