因爲一個應用程序,我要建將處理比較敏感的數據我希望每一個用戶登錄的時間同步SQLite的數據庫與服務器,每一個應用程序失去焦點(因爲用戶移動到起始時間刪除emty分貝屏幕或其他應用程序)。如何在Android應用程序關閉或失去焦點時調用方法?
看到the Activity lifecycle,我的想法是通過在每一個活動的排空的onDestroy數據庫做到這一點。爲了測試描述的生命週期,我只是覆蓋了所有的生命週期方法(onCreate,onStart,onResume,onPause,onStop和onDestroy),包含了一些日誌消息,並啓動了我的應用程序。
日誌消息都包含在我的SettingsActivity。當我進入我的應用程序並移動到設置它運行onCreate,onStart和onResume(如預期)。當我點擊一個設置並移動到下一個屏幕時,它會運行onPause和onStop(如預期)。要回到設置屏幕,我點擊後退按鈕,它會再次運行onStart和onResume(如預期的那樣),當我現在再次單擊返回按鈕返回到初始屏幕時,它(在我的意外中)運行onPause, onStop和onDestroy。
所以我的問題;
- 爲什麼它在應用程序未完成時會破壞Activity?
- 更重要的是:我怎麼能運行我的清除方法時,應用程序關閉或失去焦點?
如果用戶拔出電池或應用程序崩潰,您會做什麼? –
@ EugeneMayevski'EldoSCorp - 我們也考慮過這些情況。顯而易見的答案當然不是存儲任何內容,而是將所有內容都保存起來我們想到的一個想法是使用內存中的SQLite數據庫,但現在我們使用的orm(ActiveAndroid)不支持內存數據庫,這將是一個非常大的麻煩(但我們可能會考慮在未來)將orm移植到內存中的SQLite數據庫或返回到我們自己的數據庫連接。另一個想法是保持Java列表中的所有數據。然而,這會使智能查詢變得不可能。你有另一個想法嗎? – kramer65
數據庫的加密出現在我的腦海中,但它必須由DBMS支持。非DBMS解決方案也可能是一種選擇,但它取決於您緊密DB如何鏈接到您的架構。 –