2013-04-17 6 views
2

В моем приложении у меня есть список объектов, которые хранятся вместе с FileOutputStream в коде ниже. Кроме того, у меня есть настройки в моем приложении, хранящиеся в SharedPreferences. Всякий раз, когда я впервые обновляю свое приложение в магазине Google Play (для тех, кто не знаком с процессом, я загружаю новый APK), все объекты были удалены для всех, кто использует приложение, и все настройки, установленные по умолчанию. Почему он это сделал и как я могу хранить объекты там, где они не исчезают после обновления?Почему обновления Android для моего приложения удаляются?

public ObjectStorage readListFromFile() 
{ 
    ObjectStorage temp = null; 
    String filename = "storefileobj"; 
    FileInputStream fis; 
    try { 
     fis = getActivity().openFileInput(filename); 
     ObjectInputStream is = new ObjectInputStream(fis); 
     temp = (ObjectStorage) is.readObject(); 
     is.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (StreamCorruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return temp; 
} 


public void updateStorage() 
{ 

    String filename = "storefileobj"; 
    FileOutputStream fos; 
    try { 
     fos = getActivity().openFileOutput(filename, Context.MODE_PRIVATE); 
     ObjectOutputStream os = new ObjectOutputStream(fos); 
     os.writeObject(mainObjectList); 
     os.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

ответ

1

Для обычных обновлений ваши пользователи не потеряли бы эти значения.

Я считаю, что каждый из ваших пользователей, потерявших их сохраненные SharedPreference и сохраненные данные файла, был вынужден удалить свое старое приложение, чтобы установить новое приложение из Play Маркета. В противном случае некоторые из ваших ключей или форматов файлов должны быть изменены.

Подпись:

Вы, конечно, использовали Signing Your Applications документацию Андроида для того, чтобы обновить в Play Store, но, возможно, пользователи в которых идет речь, используя приложение, подписанное с другой подписью (например, подпись Debug Mode) что вы доставили их отдельно. Это может объяснить, почему они были вынуждены удалить до обновления в Play Маркете, тем самым стирая всю сохраненную информацию.

Формат данных:

Другой альтернативой является то, что, возможно, Keys используется для SharedPreference значений изменены ИЛИ Формат файла или структуры класса для ObjectStorage изменилось, что делает его невозможно читать старые значения. Это показалось бы пользователям, как будто старые значения исчезли. Затем, когда пользователи сохраняют значения в новом формате, ваше приложение будет продолжать работать правильно для них.

Резюме:

одно из следующих должно было произойти:

  1. Ваши пользователи удалены до повторной установки. Или,
  2. Ваш сохраненный формат данных изменен между версиями.
+0

Одна вещь, которую я знаю, из-за того, что пользователям не требуется переустанавливать. Поэтому я предполагаю, что это означает, что формат данных должен был измениться? Потому что я не касался кода до хранения данных. – AggieDev

Смежные вопросы