[英]How to temporarily store parts of data?
我有部分數據不是按順序來的。 讓我解釋 :
ID為1的用戶發送數據(“電話號碼”),但ID為78的用戶同時發送另一個數據(“家庭住址”)。
所有輸入數據都具有相同的接收器。
設置完每個ID的所有數據集后,數據將發送到mysql數據庫並從臨時存儲中刪除。
每個用戶ID需要填寫6個不同的信息,然后才能發送完整的數據。
因此,問題是如何使用其個人ID存儲臨時數據部分 (不將它們混在一起),只有這樣我才能將所有數據都進行下一個任務?
我應該使用arrayList還是其他的東西?
編輯(回答重復的建議):我的問題有點不同,那里的答案根本沒有幫助我!
您可以創建對象“數據”
class Data {
private param1,param2,...,param6;
public Data(){
}
/* PARAMS getters */
/* PARAMS setters */
public void insert(){
//insert to database
}
}
然后使用HashMap
更新數據:
HashMap<Integer, Data> map = new HashMap<Integer, Data>();
並且每次您獲取一些數據和id時都要檢查數據的類型(Data對象中的哪個參數)並在地圖中對其進行更新
Data toUpdate = map.get(id);
toUpdate.setParam...
您可以在每次設置一些參數以表明所有數據都已設置並准備插入時使它成為監聽器。
如您所說,您可以將其存儲在內存中的某些結構中。 我會選擇一些與活動無關的方法,否則您需要跟蹤活動生命周期。 例如,您可以使用HashMap將實體名稱(即名稱,地址等)映射為其值(或者,如果要存儲單個實體的多個實例,請在另一個答案中建議使用某種Data類) 。 就我個人而言,我發現此方法最繁瑣/凌亂,因為您需要將存儲與“活動”分開,或者處理所有活動更改,以免丟失狀態。
第二種方法是使用SharedPreferences。 為此目的制作一個單獨的prefs文件,獲取它們( getSharedPreferences("partial_data_dl", MODE_PRIVATE)
),將每一列存儲為prefs中的一個字段,並在將它們提交到數據庫之前清除它們。 這比將所有內容存儲在內存中容易,並且不應明顯慢。
第三點是顯而易見的:為什么不隨數據輸入更新數據庫記錄? 第一次插入僅填充一列的新記錄,每隔一次發出更新查詢以為新列添加值。 誠然,這是最重的解決方案,可能不適用於您的用例,但我會嘗試一下進行測試。 俗話說,過早的優化是萬惡之源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.