簡體   English   中英

無需使用ContentProvider(Android)即可在旋轉時保留Singleton DB數據

[英]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) 並且所有數據都應在配置更改時保存。 請注意,保留片段不是視覺其沿着你放在ActivityFragment這可以幫助你: https://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM