Podejście do serializacji klasy modelu punktu końcowego chmury do systemu plików Android
Z powodzeniem stworzyłem model punktu końcowego chmury, który umożliwia łatwe pobieranie informacji z App Engine. Aby zmniejszyć liczbę podróży w obie strony i zapewnić szybszą obsługę użytkowników, zidentyfikowałem jedną instancję, którą chcę przechowywać w pamięci lokalnej.
W pozostałej części mojej aplikacji używam ObjectInputStream do odczytu i zapisu obiektów, takich jak:
FileInputStream fis = context.openFileInput("PRIVFILE");
ObjectInputStream ois = new ObjectInputStream(fis);
AppModelState s = (AppModelState) ois.readObject();
To oczywiście wymaga od wszystkich członków danych implementacji interfejsu Serializable. Klasa Model rozszerza GenericJSON i nie jest „Serializowalna”, tak jak
public final class ModelClass extends GenericJson {}
Mogłem ręcznie utworzyć obiekt podlegający serializacji, który odwzorowuje model; jednak wydaje się to bardzo amatorskie ze względu na liczbę atrybutów.
Inną alternatywą, którą rozważałem, było stworzenie wrappera Serializable Object, który po prostu ma łańcuch JSON jako element członkowski i dostarcza setter / getter akceptujący ModelClass jako parametry, takie jak:
class AppModelState implements Serializable {
private String modelClassJSON;
public ModelClass getModelClass() {
// generate a new ModelClass from the JSON
}
public void setModelClass(ModelClass c) {
// extract the JSON for storage
}
.....
}
Czuję, że musi istnieć lepszy sposób, który powinien zostać rozwiązany kilkanaście razy, ale nie znajduję żadnych zasobów. Proszę podać dane wejściowe.