Android应用程序在完全退出时删除文件(退出任务管理器)

时间:2013-03-13 03:12:41

标签: java android fileoutputstream

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

1 个答案:

答案 0 :(得分:1)

永远不会调用你的loadFile()!没有任何东西在呼唤它! ;)