Sobes.tech
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? MyData
    
  • Application კლასი: ობიექტებისთვის, რომლებიც უნდა იცოცხლონ მთელი აპლიკაციის სიცოცხლის განმავლობაში. საჭიროა ფრთხილად იყოთ, რათა არ შეინახოთ მასში ძალიან ბევრი მონაცემი.
  • დროებითი ფაილები: უფრო დიდ ობიექტებისთვის, რომლებიც პირდაპირ ვერ ჯდება მეხსიერებაში ან საჭიროებს მოკლე დროში შენახვას დისკზე.
მეთოდი სიცოცხლის ხანგრძლივობა გამოყენება
View-ის მდგომარეობა სიცოცხლე View-ის + აღდგენა მცირე მონაცემები, დაკავშირებული View-თან
ViewModel სიცოცხლე Activity/Fragment-ის UI მონაცემები, რომლებიც გადარჩებიან კონფიგურაციის ცვლილებებს
onRetainCustomNonConfigurationInstance() სიცოცხლე Activity-ის + აღდგენა შემთხვევითი ობიექტები (ძველი)
Application კლასი სიცოცხლე აპლიკაციის გლობალური ობიექტები
დროებითი ფაილები დეველოპერის გადაწყვეტილებით დიდი ობიექტები, დროებითი შენახვა