Junior
როგორ შეგვიძლია დროებით შევინახოთ ობიექტი Android-ში?
sobes.tech AI
პასუხი AI-სგან
დროებით ობიექტის შენახვა Android-ში შესაძლებელია რამდენიმე გზით, არჩევანი დამოკიდებულია მის სიცოცხლის ხანგრძლივობაზე და საჭიროებაზე, მის შემდეგ წვდომის:
- View-ის მდგომარეობა: View-სთან დაკავშირებულ ობიექტებს შეიძლება შეინახოთ მისი მდგომარეობაში, რომელიც აღდგება View-ის ხელახლა შექმნისას (მაგალითად, ეკრანის ბრუნვისას). გამოიყენება
onSaveInstanceState()დაonRestoreInstanceState(). ViewModel: საუკეთესო გზა UI-სთან დაკავშირებული მონაცემების შენახვისთვის, რომლებიც უნდა გადარჩნენ კონფიგურაციის ცვლილებებს (მაგალითად, ეკრანის ბრუნვა).ViewModelარსებობს ViewModelStoreOwner-ის განადგურებამდე.// 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 კლასი | სიცოცხლე აპლიკაციის | გლობალური ობიექტები |
| დროებითი ფაილები | დეველოპერის გადაწყვეტილებით | დიდი ობიექტები, დროებითი შენახვა |