ในการรับทำแอพ Android Studio จำเป็นอย่างยิ่งที่จะต้องมีวิธีจัดเก็บและจัดการข้อมูลส่วนเล็กๆ เช่น การตั้งค่าผู้ใช้ การตั้งค่าแอพ หรือคะแนนของเกม Android Studio Kotlin มอบโซลูชันที่มีประสิทธิภาพและตรงไปตรงมาสำหรับความต้องการนี้ผ่าน SharedPreferences บทความนี้จะสำรวจ SharedPreferences และสาธิตวิธีใช้เพื่อคงข้อมูลในการทำแอพ Android Studio ของคุณที่สร้างด้วย Kotlin
1. ทำความเข้าใจ SharedPreferences
SharedPreferences คือ Android API ที่ให้คุณจัดเก็บและดึงคู่คีย์-ค่าของประเภทข้อมูลดั้งเดิม เช่น บูลีน, โฟลต, ints, ยาว และสตริง โซลูชันการจัดเก็บข้อมูลที่มีน้ำหนักเบานี้เหมาะอย่างยิ่งสำหรับการคงไว้ซึ่งข้อมูลง่ายๆ ที่ไม่ต้องการความซับซ้อนของฐานข้อมูลหรือโอเวอร์เฮดของที่จัดเก็บแบบไฟล์
SharedPreferences ถูกจัดเก็บไว้ในไฟล์ XML ซึ่งเป็นแบบส่วนตัวสำหรับการทำแอพคุณตามค่าเริ่มต้น ข้อมูลจะคงอยู่ตลอดเซสชันของผู้ใช้ หมายความว่าค่าที่คุณบันทึกจะสามารถใช้ได้แม้ว่าแอปจะปิดหรือรีสตาร์ทอุปกรณ์ก็ตาม
2. การเข้าถึง SharedPreferences
หากต้องการเข้าถึง SharedPreferences ในการทำแอพ Android Studio คุณสามารถใช้เมธอด getSharedPreferences() หรือเมธอดแบบย่อที่สะดวกกว่า getDefaultSharedPreferences() ข้อแตกต่างหลักระหว่างสองสิ่งนี้คือ getDefaultSharedPreferences() จะใช้ไฟล์ดีฟอลต์และหลักการตั้งชื่อโดยอัตโนมัติ ในขณะที่ getSharedPreferences() จะให้คุณระบุชื่อที่กำหนดเองสำหรับไฟล์การกำหนดค่าตามความชอบ
ตัวอย่าง:
// Using getSharedPreferences()
val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
// Using getDefaultSharedPreferences()
val defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
3. การบันทึกข้อมูลไปยัง SharedPreferences
ในการบันทึกข้อมูลไปยัง SharedPreferences คุณต้องได้รับอินสแตนซ์ของ SharedPreferences.Editor ซึ่งอนุญาตให้คุณแก้ไขเนื้อหาของไฟล์การกำหนดค่าตามความชอบ จากนั้นคุณสามารถใช้เมธอด put ของเอดิเตอร์เพื่อบันทึกคู่คีย์-ค่าของคุณ และสุดท้ายเรียกเมธอด apply() หรือ commit() เพื่อยืนยันการเปลี่ยนแปลง
ตัวอย่าง:
val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.putInt("high_score", 100)
editor.putString("player_name", "John Doe")
editor.apply()
4. ดึงข้อมูลจาก SharedPreferences
การดึงข้อมูลจาก SharedPreferences เป็นเรื่องง่าย ใช้วิธีการรับที่เหมาะสมสำหรับชนิดข้อมูล โดยระบุคีย์และค่าเริ่มต้นหากไม่มีคีย์
ตัวอย่าง:
val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
val highScore = sharedPreferences.getInt("high_score", 0)
val playerName = sharedPreferences.getString("player_name", "Unknown")
5. การลบข้อมูลจาก SharedPreferences
หากต้องการลบข้อมูลออกจาก SharedPreferences คุณสามารถใช้เมธอด remove() ของ SharedPreferences.Editor ตามด้วยการเรียก apply() หรือ commit() เพื่อยืนยันการเปลี่ยนแปลง
ตัวอย่าง:
val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.remove("high_score")
editor.apply()
6. การใช้คลาสตัวช่วย (Helper Class) SharedPreferences
เพื่อให้ขั้นตอนการเข้าถึงและจัดการ SharedPreferences ในการทำแอพ Android Studio ของคุณง่ายขึ้น คุณสามารถสร้างคลาสตัวช่วยที่ล้อมรอบ SharedPreferences API และแสดงวิธีการที่กำหนดเองสำหรับกรณีการใช้งานเฉพาะของคุณ
ตัวอย่าง:
class PreferencesHelper(context: Context) {
private val sharedPreferences = context.getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
fun saveHighScore(score: Int) {
sharedPreferences.edit().putInt("high_score", score).apply()
}
fun getHighScore(): Int {
return sharedPreferences.getInt("high_score", 0)
}
fun savePlayerName(name: String) {
sharedPreferences.edit().putString("player_name", name).apply()
}
fun getPlayerName(): String? {
return sharedPreferences.getString("player_name", "Unknown")
}
}
7. การใช้ SharedPreferences กับ Android Jetpack DataStore (ทางเลือก)
หากคุณกำลังมองหาทางเลือกที่มีประสิทธิภาพและเป็นมิตรกับ Kotlin มากกว่า SharedPreferences ให้ลองใช้ไลบรารี Android Jetpack DataStore DataStore เป็นโซลูชันการจัดเก็บข้อมูลสมัยใหม่ที่นำเสนอความปลอดภัยของประเภท รองรับ Kotlin coroutines และปรับปรุงการจัดการความสอดคล้องของข้อมูล
หากต้องการใช้ DataStore ให้เพิ่มการอ้างอิงต่อไปนี้ในไฟล์ build.gradle ของแอปของคุณ:
implementation "androidx.datastore:datastore-preferences:1.0.0"
ตัวอย่าง:
class DataStoreHelper(private val context: Context) {
private val dataStore = context.createDataStore(name = "my_data_store")
companion object {
val HIGH_SCORE = preferencesKey<Int>("high_score")
val PLAYER_NAME = preferencesKey<String>("player_name")
}
suspend fun saveHighScore(score: Int) {
dataStore.edit { preferences ->
preferences[HIGH_SCORE] = score
}
}
fun getHighScore(): Flow<Int> {
return dataStore.data.map { preferences ->
preferences[HIGH_SCORE] ?: 0
}
}
suspend fun savePlayerName(name: String) {
dataStore.edit { preferences ->
preferences[PLAYER_NAME] = name
}
}
fun getPlayerName(): Flow<String> {
return dataStore.data.map { preferences ->
preferences[PLAYER_NAME] ?: "Unknown"
}
}
}
SharedPreferences เป็นโซลูชันที่มีประสิทธิภาพและตรงไปตรงมาสำหรับการคงข้อมูลจำนวนเล็กน้อยสำหรับการทำแอพ Android Studio Kotlin เมื่อเข้าใจวิธีการเข้าถึง บันทึก ดึงข้อมูล และลบข้อมูลจาก SharedPreferences คุณจะสามารถจัดการข้อมูลง่ายๆ เช่น การตั้งค่าผู้ใช้และการตั้งค่าแอปได้อย่างมีประสิทธิภาพ การใช้คลาสตัวช่วยสามารถลดความซับซ้อนของกระบวนการทำงานกับ SharedPreferences และปรับปรุงการจัดระเบียบรหัสของคุณ หากคุณกำลังมองหาทางเลือกที่ทันสมัยกว่า ให้ลองใช้ไลบรารี Android Jetpack DataStore เพื่อรับสิทธิประโยชน์เพิ่มเติม เช่น ความปลอดภัยของประเภทและการสนับสนุน Kotlin coroutines