我有一個屬性文件存儲在資產文件夾的Android項目。我需要在每次需要值時避免該文件的I/O讀取,以便第一次加載文件並將其保存在靜態字段中。請記住,這是一款在嵌入式平板電腦上「始終運行」的應用程序,因此基本上沒有生命週期。這是我對本作的實現:在內存中的Android緩存屬性文件,以避免I/O
Properties.java:
private static java.util.Properties properties;
private static Context mContext;
public static void init(Context context) {
mContext = context.getApplicationContext();
if(properties == null){
AssetManager assetManager = context.getAssets();
InputStreamReader reader = null;
try {
reader = new InputStreamReader(assetManager.open("path_to_prop_file"), "UTF-8");
properties = new java.util.Properties();
properties.load(reader);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static String get(String entry){
try {
return properties.getProperty(entry);
} catch (Exception e){
init(mContext);
return properties.getProperty(entry);
}
}
然後我把它從活動:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Properties.init(getApplicationContext());
String property = Properties.get("prop_key");
}
我是緩存也語境的情況下,屬性文件需要被重新加載。我可以將上下文作爲參數傳遞給「Get」方法,但是我需要在應用程序中隨處讀取屬性,並且我不想通過所有類傳遞上下文。 我想知道如果這個實現是好的,並且在我的情況下關於上下文的泄漏是危險的。 任何建議被理解
EDIT 1:最後塊中追加關閉讀者所建議
考慮關閉你的閱讀器在finally塊 –
@NicolasFilotto當然我會感謝 – Nem3sis