Asetusten lukeminen ja kirjoittaminen
Tallentakaa käyttäjän asetukset ja tarkkailkaa niitä.
Asetusten lukeminen ja kirjoittaminen on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
Lukeminen ja kirjoittaminen
Kun avaimet on määritetty, kaksi keskeistä toimintoa ovat tietovirran lukeminen ja edit-funktion avulla kirjoittaminen. Lukeminen on reaktiivista ja kirjoitukset ovat suspend-funktioita.
data-Flow
dataStore.data on Flow<Preferences>. Aina kun kirjoitat tietoja, virta lähettää uuden Preferences-tilannekuvan, joten kerääjät pysyvät automaattisesti ajan tasalla.
val rawData: Flow<Preferences> = dataStore.dataYksittäisen arvon muuntaminen
Koko Preferences-objektia tarvitaan harvoin. Poimi yksi avain map-funktiolla ja käytä sille oletusarvoa.
val darkMode: Flow<Boolean> = dataStore.data
.map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }Lukuvirheiden käsittely
Levyn lukeminen voi epäonnistua IOException-poikkeuksen vuoksi. Käytä catch-operaattoria ennen map-operaattoria, jotta virta lähettää tyhjät asetukset ja jatkaa toimintaansa.
val darkMode: Flow<Boolean> = dataStore.data
.catch { e ->
if (e is IOException) emit(emptyPreferences())
else throw e
}
.map { it[PrefKeys.DARK_MODE] ?: false }Kirjoittaminen edit-funktiolla
Jos haluat muuttaa arvoja, kutsu edit-suspend-funktiota. Lambdan sisällä saat käyttöösi muokattavan preferences-olion, jonka avaimille asetat arvot. Koko lohko muodostaa yhden transaktion.
suspend fun setDarkMode(enabled: Boolean) {
dataStore.edit { prefs ->
prefs[PrefKeys.DARK_MODE] = enabled
}
}edit on suspend-funktio
Koska edit on suspend-funktio, sitä on kutsuttava coroutinesta, yleensä ViewModelin sisällä käyttämällä viewModelScope.launch-funktiota. Näin kirjoitus tehdään pääsäikeen ulkopuolella.
fun toggleDarkMode(value: Boolean) {
viewModelScope.launch {
repository.setDarkMode(value)
}
}Useiden avainten päivittäminen
Yhdessä edit-lohkossa voi asettaa useita avaimia. Ne vahvistetaan yhdessä atomisesti, joten tarkkailijat eivät koskaan näe osittain päivitettyjä tietoja.
dataStore.edit { prefs ->
prefs[PrefKeys.USERNAME] = "ada"
prefs[PrefKeys.DARK_MODE] = true
prefs[PrefKeys.FONT_SIZE] = 16
}Arvon kasvattaminen
edit-lohkon sisällä voit lukea nykyisen arvon ja laskea uuden arvon. Tämä sopii esimerkiksi käynnistyskertojen laskureihin.
suspend fun incrementLaunchCount() {
dataStore.edit { prefs ->
val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
prefs[PrefKeys.LAUNCH_COUNT] = current + 1
}
}Poistaminen ja tyhjentäminen
Poista yksittäinen avain remove-funktiolla tai tyhjennä tietovarasto clear-funktiolla. Molemmat tehdään edit-lohkon sisällä.
dataStore.edit { prefs ->
prefs.remove(PrefKeys.USERNAME)
}
dataStore.edit { prefs ->
prefs.clear()
}Kerääminen Composessa
Muuta Composable-funktiossa ViewModelin virta tilaksi käyttämällä collectAsStateWithLifecycle()-funktiota. Käyttöliittymä muodostetaan uudelleen aina, kun asetus muuttuu.
val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)
Switch(
checked = darkMode,
onCheckedChange = { viewModel.toggleDarkMode(it) }
)Lue–muokkaa–kirjoita-sykli
Kokonaisuus toimii näin: käyttöliittymä lukee tietoja virrasta, käyttäjä muuttaa valintaa, ViewModel käynnistää coroutinen, joka kutsuu edit-funktiota, DataStore kirjoittaa tiedot, virta lähettää uuden arvon ja käyttöliittymä muodostetaan uudelleen. Koko ketju on täysin reaktiivinen.
Pikatesti
Testaa, ymmärrätkö lukemisen ja kirjoittamisen.
Kertaus
Osaat nyt lukea ja kirjoittaa asetuksia:
dataStore.dataon reaktiivinenFlow<Preferences>mappoimii yksittäisen arvon jacatchkäsittelee I/O-virheetdataStore.edit { }kirjoittaa atomisesti coroutinestacollectAsStateWithLifecycleohjaa Compose-käyttöliittymää
Seuraavaksi käsitellään tyypitettyä rakenteista tietoa Proto DataStoren avulla.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Asetusten lukeminen ja kirjoittaminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Asetusten lukeminen ja kirjoittaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Asetusten lukeminen ja kirjoittaminen”?
Tallentakaa käyttäjän asetukset ja tarkkailkaa niitä. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Asetusten lukeminen ja kirjoittaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?
Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- DataStore vai SharedPreferences
- Preferences DataStore
- Asetusten lukeminen ja kirjoittaminen
- Proto DataStore