2017-07-15 31 views
0

我有一項綁定到某個活動的服務。該服務設置爲隨任務停止。當此服務停止時,我想將一些數據保存到文件中。我寫了一個函數來保存數據並在onDestroy(),onLowMemory(),onTaskRemoved()中調用這個函數。 這裏是代碼 -Android:在服務停止時安全地保存數據

@Override 
public void onTaskRemoved(Intent rootIntent) { 
    saveData(); 
    super.onTaskRemoved(rootIntent); 
} 

@Override 
public void onLowMemory() { 
    saveData(); 
    super.onLowMemory(); 
} 

@Override 
public void onDestroy() { 
    saveData(); 
    super.onDestroy(); 
} 

但是,當用戶清除最近從應用列表中的應用程序沒有這種方法被調用。在這種情況下,服務會停止,但我的數據不會寫入文件。

有沒有什麼方法可以確保數據在每種可能的情況下寫入文件?

+0

隨着數據的變化,隨時隨地保存它。無論出於何種原因,您的流程都可以隨時終止。內存中的任何東西只是一個緩存。 – CommonsWare

+0

@CommonsWare數據定期更新。每次數據更改時都不會文件I/O,會消耗很多系統資源? –

+0

如果您願意,我們當然歡迎您緩衝數據。當您的流程終止時,您緩衝但尚未保存的任何內容都將丟失。因此,您必須在數據更新頻率,磁盤I/O頻率和數據丟失風險之間取得平衡。 – CommonsWare

回答

0

如果您想在用戶從應用程序列表中清除緩存後保存數據,則需要將數據保存到sqlite數據庫或領域等,否則數據將被刪除。