0

我有一个试图适应 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;
}
}
4

1 回答 1

1

您的 loadFile() 永远不会被调用!里面没有东西叫它!;)

于 2013-03-13T10:49:29.440 回答