Məlumatlar fraqmentdən kənarda necə saxlanıla bilər?
sobes.tech Süni İntellekt
AI-dan cavab
Fragmentdən kənarda məlumatların saxlanması üçün bir neçə üsul mövcuddur:
-
ViewModel: UI ilə əlaqəli məlumatları həyat dövrü ilə məlumatlı şəkildə saxlamaq üçün idealdır. Konfiqurasiya dəyişikliklərinə davam edir.class MyViewModel : ViewModel() { var data: String = "" } -
Activity: Fragmentlər konteyner aktivliyi ilə (məsələn, interfeys və ya birbaşa) qarşılıqlı əlaqə qura bilər, burada aktivlik məlumatları saxlaya bilər.
// Activity-də var sharedData: String = "" // Fragment-də (activity as? MyActivity)?.sharedData = "Fragmentdən saxlanılıb" -
Shared Preferences: Primitiv məlumatları (kiçik həcmdə) saxlamaq üçün sadə üsul.
// Fragment-də val sharedPref = activity?.getSharedPreferences("my_prefs", Context.MODE_PRIVATE) ?: return with(sharedPref.edit()) { putString("saved_string", "Mənim məlumatlarım") apply() // və ya commit() sinxron yazmaq üçün } -
SQLite Database: Strukturlaşdırılmış məlumatlar və daha mürəkkəb sorğular üçün.
-- SQL nümunəsi CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT); -
Room Persistence Library: SQLite üzərində abstraksiya, bazalarla işləmək asanlaşdırır.
// Room Entity nümunəsi @Entity data class User( @PrimaryKey val id: Int, val name: String ) -
DataStore: Modern alternativ, asinxron və təhlükəsiz məlumat saxlamağa imkan verir.
// DataStore Prefs nümunəsi val EXAMPLE_COUNTER = intPreferencesKey("example_counter") // Fragmentdə context?.dataStore?.edit { settings -> val currentCounter = settings[EXAMPLE_COUNTER] ?: 0 settings[EXAMPLE_COUNTER] = currentCounter + 1 } -
Daxili/Xarici yaddaş: Faylların saxlanması üçün.
// Fayla yazma val filename = "my_data.txt" val fileContents = "Salam, dünya!" context?.openFileOutput(filename, Context.MODE_PRIVATE)?.use { it.write(fileContents.toByteArray()) } -
Singleton: Uygulama boyunca əlçatan olan qlobal sinif nümunəsi, məlumatların saxlanması üçün. Test və yaddaş sızmalarını nəzərə alaraq ehtiyatla istifadə edin.
object DataManager { var sharedData: String = "" } -
Application Sinfi:
Application-u genişləndirən sinif, bütün tətbiq üçün qlobaldır və məlumatları saxlaya bilər.class MyApp : Application() { var globalData: String = "" }