我是初学Android开发者,我正在寻找保存文件的帮助。在Google的开发人员文档中,他们声明使用内部存储来保存文件。 我的目标是创建一个可以根据需要保存和访问的arraylist。
目前,我有一个活动,用户可以将数据输入到字段中,然后创建一个包含该数据的新对象。我试图将这些数据添加到arraylist然后保存。但是,我需要在MainActivity中检查arraylist,这是在首次创建应用程序时访问的。主要活动需要检查ArrayList是否已存在或是否需要创建新的ArrayList。然后需要将该arraylist(通过Intents,已经理解该部分)发送到所有对arraylist执行操作的活动,然后将其发送回保存它的mainactivity。
任何可以提供的帮助都将受到无限的赞赏。如果不清楚我很抱歉,我会尽力澄清。任何提高我的Android技能的提示也将受到赞赏。
谢谢!
答案 0 :(得分:0)
您需要做的第一件事是将文件加载到ArrayList中。例如,您可以使用AsyncTask执行此操作。有关此内容的更多信息,请访问:http://developer.android.com/guide/components/processes-and-threads.html
其次,如果您的ArrayList很大,我建议扩展Application类并在那里保存您的ArrayList实例,而不是通过Intent发送它。这样每个Activity(以及您应用的其他组件)都可以访问它。当您通过意图发送数据时,日期被封送/解组,这可能需要大量的CPU时间并且会使您的活动过渡变得干扰。
答案 1 :(得分:0)
实际上,它取决于您希望如何保存这些数据。它是在文件上(保存在存储卡上),但可以由用户删除。
如果您不希望允许用户访问您拥有的数据: - SQLite database - Shared preferences
如果不需要存储arraylist以供进一步使用,您也可以使用单例类(非常容易使用)。
public class Singleton {
private static Singleton mInstance = null;
private ArrayList<Integer> mArray;
private Singleton(){
mArray = new ArrayList<Integer>();
}
public static Singleton getInstance(){
if(mInstance == null)
{
mInstance = new Singleton();
}
return mInstance;
}
public ArrayList<Integer> getArray(){
return this.mArray;
}
public void setArray(ArrayList<Integer> value){
mArray = value;
}
public void addValue(Integer value){
mArray.add(value);
}
}
或使用这样的额外意图:
Intent i = new Intent(this,name.class);
Bundle b = new Bundle();
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
i.putExtra(String name,b);
startActivity(i);
Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name);