[英]how to store persistent data in java
我對Java還是很陌生,並且根據我所讀的內容做出了一些假設,所以如果我錯了,請更正我。
我正在制作一個Android應用程序,該程序可從SD卡下載JSON數據,然后可以通過過濾進行搜索。
如果我使用javascript進行此操作,則只需將數據保存到全局變量並隨時訪問。 但是(從我所讀的內容中),java沒有全局變量,並且它所具有的相似之處並不是真正明智的選擇。
因此,我現在要做的是,每次開始新的搜索時,都是從SD卡重新下載所有數據。 但這似乎效率很低。 我已經閱讀了有關Singletons和Builders的一些文章,我想也許這就是我想要的(我真的在這里陷入困境),但是我不太了解在這種情況下如何實現它們,或者如果它們實際上是最好的解決方案。
如果有什么不同,則應用程序運行時數據永遠不會改變。
有人可以給我一些最好的方法嗎? 我真的只想在應用加載時獲取一次數據,然后以后再訪問它。 如果有幫助,這就是我用來從SD卡獲取數據的代碼...
public static JSONArray getArray(){
FileInputStream stream = null;
String jString = null;
File yourFile = new File("/mnt/extSdCard/app/thejson.json");
try {
stream = new FileInputStream(yourFile);
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
/* Instead of using default, pass in a decoder. */
jString = Charset.defaultCharset().decode(bb).toString();
} catch (FileNotFoundException e) {
Log.i("err", "file not found");
}
catch (IOException e) {
Log.i("err", "IO exception");
}
try {
stream.close();
} catch (IOException e) {
Log.i("1", "IO exception");
}
try {
names = new JSONArray(jString);
} catch (JSONException e1) {
Log.i("err", "IO exception");
}
return names;
}
您可以在Java中以幾種不同的方式保存數據。 如果要在許多不同的類之間共享數據,則可以在一個類中創建一個變量並將其命名為public,也可以創建一個公共的靜態返回方法,該方法返回所需的值(在這種情況下,該變量為private)。 無論類是否包含包含該方法的對象,都可以訪問靜態方法。 存儲數據的另一種方法(盡管我不建議這樣做,但我建議使用靜態方法)是創建一個接口,並使所有使用數據的類都實現該接口。
只要在您的主要活動中將“名稱” JSON Array設置為成員變量,就可以在活動有效期間對其進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.