我正在使用Java创建Android应用。我的主要活动是读取CSV文件,创建对象,然后将它们保存到Singleton类中,以便应用程序中的其他活动可以轻松访问它们。
这工作得很好,但是我不确定是否有其他方法可以达到更好的效果,或者我的解决方案是否会导致我不知道的问题。
任何建议将不胜感激。谢谢。
MainActivity扩展了AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createItemObjects();
}
public void createItemObjects(){
InputStream is = getResources().openRawResource(R.raw.items_csv);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
ArrayList<Item> items = new ArrayList<Item>();
String line = "";
try {
while((line = reader.readLine())!=null) {
String[] values = line.split(",");
String img = values[0];
int imgID = getResources().getIdentifier(img , "drawable", getPackageName());
items.add(new Item(imgID, values[1], values[2]));
}
} catch (IOException e) {
Log.v("Main Activity", "Error Reading File on Line " + line, e);
e.printStackTrace();
}
ItemListHolder.getInstance().setItemsArrayList(items);
}
因此,如您所见,当应用程序启动时,它会读取CSV文件,创建Item对象,创建一个ArrayList来存储这些Item对象,然后将其发送到ItemListHolder单例中,以便应用程序中的所有Activity都可以使用ItemListHolder.getInstance()。getItemsArrayList()以检索Item的ArrayList。
这没有任何问题,但是我的问题是:认为您的Android应用每次重新启动时都通过CSV文件创建对象被认为是良好的做法/使用安全/效率高,还是应该以其他方式存储对象,例如共享的首选项,这样它们实际上就保存在内存中,不需要在每次启动应用程序时将其创建并保存在类中。
我熟悉Java,但是对android来说是一个新手,所以我真的不知道还有什么其他保存对象的方法可能存在或不存在,或者什么被认为很好使用。