比方说,我们有存储在JSON txt文件中的项目库存。要访问数据,我们使用stringBuilder类加载JSON文件,然后将StokItems填充到:
List<StockItem> stock;
像这样:
stock.clear();
Gson gson = new Gson();
stock = gson.fromJson(stringBuilder.toString(), new TypeToken<List<StockItem>>() {
}.getType());
由于我们想利用Android中的LiveData,我们引入了:
MutableLiveData<List<StockItem>> stockLiveData = new MutableLiveData<>();
要使其正常工作,我们必须将数据发布到其中:
public LiveData<List<StockItem>> getLiveStockList() {
stockLiveData.postValue(stock);
return stockLiveData;
}
这是问题所在,如果一行:
stockLiveData.postValue(stock);
消耗用于创建另一个副本的内存
List<StockItem> stock
如果这样的话,将“原始数据”保留在内部是个好主意
stockLiveData
仅减少变量对内存的影响? (如果可能的话...)
答案 0 :(得分:0)
无需使用global
变量来保存临时数据。您可以使用local
变量,也可以直接发布到LiveData
。
public LiveData<List<StockItem>> getLiveStockList() {
return stockLiveData;
}
然后都
List stock = gson.fromJson(stringBuilder.toString(), new TypeToken<List<StockItem>>() { }.getType());
stockLiveData.postValue(stock);
或
stockLiveData.postValue(gson.fromJson(stringBuilder.toString(), new TypeToken<List<StockItem>>() { }.getType()))
您还可以访问LiveData中的列表,如下所示:
stockLiveData.getValue();
返回原始列表数据。
答案 1 :(得分:0)
我想在这里指出有关您的代码的几件事: