使用CSV文件创建对象是一种好习惯吗?

时间:2018-06-29 18:18:33

标签: java android csv save

我正在使用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来说是一个新手,所以我真的不知道还有什么其他保存对象的方法可能存在或不存在,或者什么被认为很好使用。

0 个答案:

没有答案