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 に答える