我有一个试图适应 iOS 项目的数据存储类。它适用于 iOS,它几乎适用于我的 android 项目,但是,当从任务管理器退出 android 应用程序时,文件不会在下次运行时恢复。
该类的意图是如果在保存对象时没有文件,则该类将创建文件并保存它。如果有文件,该类将打开包含数组的文件,将对象附加到该数组并保存。
我是否缺少将文件保存到设备上的东西?
这就是我调用类来保存文件的方式
ObjectStore.defaultStore().saveObject(getApplicationContext(), anObject);
这是我的 ObjectStore 类
public class ObjectStore {
ArrayList<Object> objectList = new ArrayList<Object>();
static ObjectStore defaultStore = null;
Context context = null;
public static ObjectStore defaultStore(){
if(defaultStore == null){
defaultStore = new ObjectStore();
}
return defaultStore;
}
public Object ObjectStore(){
if(defaultStore != null){
return defaultStore;
}
return this;
}
public ArrayList<Object> objectList(){
return objectList;
}
public Object saveObject(Context c, Object object){
context = c;
objectList.add(object);
saveFile(context);
return object;
}
public void clearAll(){
objectList.clear();
saveFile(context);
}
public boolean doesFileExist(Context c){
context = c;
File file = c.getFileStreamPath("objectList.file");
if(file.exists()){
return true;
}else{
return createFile(context);
}
}
public boolean createFile(Context c){
context = c;
try{
FileOutputStream fos = context.openFileOutput("objectList"+".file", Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(objectList);
oos.close();
return true;
}catch(IOException e){
e.printStackTrace();
Log.d("TAG", "Error creating file: " + e);
return false;
}
}
public boolean saveFile(Context c){
Log.d("TAG", "Trying to save file");
context = c;
try{
FileOutputStream fos = context.openFileOutput("objectList.file", Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(objectList);
oos.close();
Log.d("TAG", "File Saved");
return true;
}catch(IOException e){
e.printStackTrace();
Log.d("TAG", "Error saving file: " + e);
return false;
}
}
@SuppressWarnings("unchecked")
public ArrayList<Object> loadFile(Context c) throws Exception{
Log.d("TAG", "Trying to load file");
context = c;
if(doesFileExist(context)){
try{
FileInputStream fis = context.openFileInput("objectList.file");
ObjectInputStream in = new ObjectInputStream(fis);
objectList = (ArrayList<Object>) in.readObject();
in.close();
Log.d("TAG", "File Loaded");
return objectList;
}catch(IOException e){
e.printStackTrace();
Log.d("TAG", "Error loading file: " + e);
return null;
}
}
return null;
}
}