Чӣ гуна метавон маълумотро дар берун аз фрагмент нигоҳ дошт?
sobes.tech AI
Ҷавоб аз AI
Меъёри чанд роҳ барои нигоҳ доштани маълумот дар берун аз фрагмент вуҷуд дорад:
-
ViewModel: Идеалӣ барои нигоҳ доштани маълумоти марбут ба UI, бо тарзи огоҳ ба ҳаёти циклӣ. Пас аз тағиротҳои конфигуратсия мебарояд.class MyViewModel : ViewModel() { var data: String = "" } -
Activity: Фрагментҳо метавонанд бо фаъолиятҳои контейнерӣ (масалан, тавассути интерфейс ё мустақим) муошират кунанд, ки дар он фаъолият метавонад маълумотро нигоҳ дорад.
// Дар Activity var sharedData: String = "" // Дар Fragment (activity as? MyActivity)?.sharedData = "Захирашуда аз фрагмент" -
Shared Preferences: Роҳи содда барои нигоҳ доштани маълумоти примитивӣ (объёмҳои хурд).
// Дар Fragment val sharedPref = activity?.getSharedPreferences("my_prefs", Context.MODE_PRIVATE) ?: return with(sharedPref.edit()) { putString("saved_string", "Маълумоти ман") apply() // Ё commit() барои навиштани синхронӣ } -
SQLite Database: Барои маълумоти сохторӣ ва дархостҳои мураккаб.
-- Намунаи SQL CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT); -
Room Persistence Library: Абстраксия бар над SQLite, ки кор бо базаҳои додаҳоро осон мекунад.
// Намунаи Room Entity @Entity data class User( @PrimaryKey val id: Int, val name: String ) -
DataStore: Алтернативаи муосир ба Shared Preferences, ки имкон медиҳад маълумотро асинхронӣ ва бехатар нигоҳ доштан.
// Намунаи DataStore Prefs val EXAMPLE_COUNTER = intPreferencesKey("example_counter") // Дар Fragment context?.dataStore?.edit { settings -> val currentCounter = settings[EXAMPLE_COUNTER] ?: 0 settings[EXAMPLE_COUNTER] = currentCounter + 1 } -
Наслӣ/Ҳосилӣ нигоҳдории: Барои нигоҳ доштани файлҳо.
// Навишт ба файл val filename = "my_data.txt" val fileContents = "Салом, ҷаҳон!" context?.openFileOutput(filename, Context.MODE_PRIVATE)?.use { it.write(fileContents.toByteArray()) } -
Singleton: Намунаи глобалӣ барои нигоҳ доштани маълумот, ки аз ҳар ҷое дар барнома дастрас аст. Бояд бо эҳтиёт истифода шавад, зеро метавонад бо мушкилоти озмоиш ва шикастани хотира рӯбарӯ шавад.
object DataManager { var sharedData: String = "" } -
Класс барномаи: Класс, ки
Application-ро васеъ мекунад, ва барои тамоми барнома глобалӣ аст ва метавонад маълумотро нигоҳ дорад.class MyApp : Application() { var globalData: String = "" }