Junior
Hogyan tárolhatunk ideiglenesen egy objektumot az Androidban?
sobes.tech MI
Válasz az MI-től
Az Androidban különböző módokon lehet ideiglenesen objektumokat tárolni, a választás az életidejüktől és attól függ, hogy szükség van-e rájuk a komponens befejezése után:
- View állapota: A View-hoz kapcsolódó objektumokat el lehet menteni a státuszába, amelyet a View újraalkotásakor (például képernyőforgatáskor) visszaállítanak. Az
onSaveInstanceState()és azonRestoreInstanceState()használatos. ViewModel: A legjobb módszer az UI-hoz kapcsolódó adatok mentésére, amelyeknek túl kell élniük az aktivitás/fragment konfigurációs változásait (például képernyőforgatásokat). AViewModeladdig létezik, amíg aViewModelStoreOwnernincs megsemmisítve.// Az Activity/Fragment-ben val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // A ViewModel-ben class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(elavult): Metódus az Activity-ben, hogy tetszőleges objektumokat tároljon, amelyek túlélnek konfigurációs változásokat. Az objektum eléréséhez agetLastNonConfigurationInstance()használatos. Elavult, aViewModeljavára.// Az Activity-ben override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Objektum elérése val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationosztály: Olyan objektumok számára, amelyek az alkalmazás teljes életciklusán át élniük kell. Óvatosan kell használni, hogy ne tároljunk túl sok adatot.- Ideiglenes fájlok: Nagyobb objektumok számára, amelyek nem férnek közvetlenül a memóriába, vagy rövid távon a lemezen kell tárolni őket.
| Módszer | Életciklus ideje | Használat |
|---|---|---|
| View állapota | View élete + újraalkotás | Kis adatok, amelyek a View-hoz kapcsolódnak |
| ViewModel | Activity/Fragment élete | UI adatok, amelyek túlélnek konfigurációs változásokat |
onRetainCustomNonConfigurationInstance() |
Activity élete + változások | Tetszőleges objektumok (elavult) |
Application osztály |
Az alkalmazás élete | Globális objektumok |
| Ideiglenes fájlok | A fejlesztő által meghatározva | Nagyobb objektumok, ideiglenes tárolás |