2017-11-10 64 views
0

我們正在試圖在模擬器上使用Secondary EXTERNAL存儲,這很好。用戶可以選擇外部或內部存儲。 Android build 26.0.2 YES清單擁有權限。當這行代碼包含在啓動程序Activity中時,存儲默認爲INTERNAL helper = new DBHelper(this); 助手聲明爲靜態。使用該行代碼的最大好處是,當應用程序停止時或者我們在模擬器中使用Clear All關閉應用程序時,由RecyclerAdapter支持的ArrayList中的綁定數據仍然存在。因此,除非在Activity中需要使用幫助程序聲明,否則需要從數據庫重新加載數據並填充ArrayList。這是我們迷失的地方。我們試圖調用加載ArrayList的DBhelper中的方法。以下代碼不在ListActivity中。應用程序在關閉後總是返回到MainActivity。所以問題是我在哪裏以及如何放置代碼以從數據庫重新填充ArrayList?幫手聲明阻止外部存儲

}// End of onCreate Bundle 

@Override 
protected void onResume() { 
    super.onResume(); 
    helper = new DBHelper(this); 
    dbList = new ArrayList<>(); 
    dbList = helper.getDataFromDB(); 
} 

回答

1

我試圖測試這一點,並發現你並不需要的代碼 輔助線=新DBHelper(本);這個問題在你的MainActivity中的某個地方,你的代碼正在設置變量THE_PATH之前,你的代碼正在訪問DBHelper。在我的測試中,我發現你需要建立變量THE_PATH的內容,該變量在該行程完成之前傳遞給DBHelper。在測試過程中,我更改了config.ini以從模擬器中排除SD卡,並且Android只使用內部存儲器。 因此截至目前我的測試仍然不允許用戶選擇存儲類型。 如果數據庫超出了內部存儲器的存儲容量,那麼只需將缺省值設置爲EXTERNAL存儲。正如你所知道的數據是不是真正安全的SD卡

+0

如果沒有SD卡後數據先前保存到SD卡會發生什麼情況將測試的想法和接受答案 –

+0

@James_Duh Android將默認爲INTERNAL存儲或者最好的設計是通過將該值存儲在txt文件或數據庫中的某處,讓用戶知道他們以前使用過EXTERNAL存儲 – Grendel