Junior
Биз Androidда объектти убактылуу сактап калуу үчүн кандай кылышыбыз керек?
sobes.tech AI
AIден жооп
Убакыттык түрдө объектти Androidде сактоо ар кандай жолдор менен ишке ашырылышы мүмкүн, тандоо анын жашоо мөөнөтүнө жана компоненттин аяктагандан кийин жеткиликтүүлүгүнө көз каранды:
- Viewтин абалы: View менен байланышкан объекттер анын абалында сакталат, ал кайра View түзүлгөндө (мисалы, экранды бурууда) калыбына келет.
onSaveInstanceState()жанаonRestoreInstanceState()колдонулат. ViewModel: UI менен байланышкан маалыматтарды сактоо үчүн эң жакшы жол, ал конфигурация өзгөргөндө (мисалы, экранды буруу) да сакталат.ViewModelViewModelStoreOwner жок кылынганга чейин болот.// Activity/Fragmentте val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // ViewModelде class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(тарыхтан чыккан): Activityте конфигурация өзгөргөндө сакталуучу произвольдуу объекттер үчүн ыкма.getLastNonConfigurationInstance()аркылуу ал объект алынып келет. Бул ыкмаViewModelүчүн алмаштырылган.// Activityте override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Объектти алуу val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationклассы: Өмүр бою колдонмонун жашоо циклине туруштук берүүчү объекттер үчүн. Аларды сактоодо этият болуу керек, анткени көп маалымат сакталбашы керек.- Убактылуу файлдар: Жөнөкөй эс тутумга сыйбаган же кыска мөөнөттүү сактоо талап кылынган чоң объекттер үчүн.
| Метод | Жашоо мөөнөтү | Колдонуу |
|---|---|---|
| Viewтин абалы | Viewдин жашоосу + кайра абал | Кичинекей маалыматтар, View менен байланышкан |
| ViewModel | Activity/Fragment жашоосу | UI маалыматтары, конфигурация өзгөргөндө да сакталат |
| onRetainCustomNonConfigurationInstance() | Activity жашоосу + кайра абал | Произвольдуу объекттер (тарыхтан чыккан) |
| Application классы | Колдонмонун жашоосу | Глобалдык объекттер |
| Убактылуу файлдар | Дамытучунун чечими боюнча | Чоң объекттер, убактылуу сактоо |