[英]preserving Singleton DB data on rotation Without using ContentProvider (Android)
如何在屏幕旋轉后不使用Content Provider或加載程序的情況下在活動中保留單例數據庫數據?
這是我遇到的一個面試問題。
帶有光標加載程序的ContentProvider是我的第一個想法,但他們表示不希望這樣。 然后,我想到了保存從單例數據庫的查詢方法返回的游標,但是我無法將游標“放入” OnSavedInstance的輸出包中,所以我不知道。
我還問他們“是否不鼓勵使用單例數據庫?” 他們說:“是的,但這僅是為了面試。”
也許這可以幫助將來遇到此問題的人。
聽起來“不允許在活動中”將所有內容傳遞給應用程序類(在屏幕旋轉時不會被破壞)。 但是以防萬一這是一個選擇:
您編寫自己的類,該類從Application
擴展。 官方文檔告訴您如何執行此操作,但聲明您基本上不需要這樣做。 話雖如此,該堆棧溢出帖子是該規則可能出現的異常的集合。
在Activity
,您可以像這樣訪問它:
MyApplication app = (MyApplication)getApplication();
但是我個人將一個Activity
數據保存在保留的Fragment
而不是在Application
類中。 它們可以承受配置更改,但請記住,它們不屬於后堆棧。 因此,如果您具有savedInstanceState!= null,則可能仍以其初始狀態重新創建了保留的Fragment
,例如,如果應用程序已暫停了一段時間。
處理配置更改的指南顯示了如何使用保留的Fragment
您可以使用fragments
並使用Fragment#setRetainInstance(true)
。 並且所有數據都應在配置更改時保存。 請注意,保留片段不是視覺其沿着你放在Activity
或Fragment
這可以幫助你: https://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.