2013-03-12 2 views
2

При автоматическом обновлении удаляется старая дата сохранения в настройках моего приложения.
Как я могу предотвратить это удаление?
Я хочу, чтобы при обновлении моего приложения он не удалял мои старые данные.Сохранение данных перед автоматическим обновлением

+0

@ChiragPatel .. код не требуется для этого человека. Я попросил простой запрос. – Noman

ответ

1

Я не уверен, будет ли это хорошим решением, а просто предложением, которое вы можете попробовать.

шаг 1: всякий раз, когда вы changeg (добавлять/редактировать/удалить) хранилища данных его постоянного хранения, вы можете попробовать любой из следующих

a. save the data in file in sd card 
b. store the data to your remote server or 
c. store in internal memory of the phone. 

(я не уверен ли он будет устранена после обновления в случае с, для справки можно проверить here

Шаг 2: creae BroadcastReceiver, который слушает ACTION_PACKAGE_REPLACED Намерения. Таким образом, вы знаете, когда обновляется ваш пакет приложений. NOw снова считывает данные из хранилища, в котором вы сохранили данные (1a/1b/1c)

Внимание! Не важно сохранять данные пользователя без его беспокойства.

+0

Спасибо за подробный ответ StinePike ... Я сохраняю данные в общих prefs уже, но теперь я хочу спросить, что данные удаляются при автоматическом обновлении? Согласно моим данным R & D, данные сохраняются с именем пакета, поэтому автоматическое обновление не должно меняться. – Noman

+0

Я знал, что SharedPreference сохраняются даже после обновления .. но в соответствии с этим ответом http://stackoverflow.com/a/ 10201011/931982 иногда может быть удалено. – stinepike

+0

, но в других местах я обнаружил, что SharedPreferences сохраняет данные, кроме cleardata или uninstall. Но, как вы сказали, что ваши данные от предпочтения потеряны, я думал, что вы уже пробовали SharedPreference – stinepike

1

Android сохранить SharedPreference в/данные/данные/ваше имя пакета/shared_prefs

Вообще, приложение обновления не будет удалить sharedPreference.

private void replaceNonSystemPackageLI(PackageParser.Package deletedPackage, 
     PackageParser.Package pkg, int parseFlags, int scanMode, UserHandle user, 
     String installerPackageName, PackageInstalledInfo res) { 
    ... 
    // First delete the existing package while retaining the data directory 
    if (!deletePackageLI(pkgName, null, true, PackageManager.DELETE_KEEP_DATA, 
      res.removedInfo, true)) { 
     // If the existing package wasn't successfully deleted 
     res.returnCode = PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE; 
     deletedPkg = false; 
    } else { 
     .... 
    } 
    .... 
} 

Я думаю, что вам нужно проверить следующее:

  1. Является ли ваше устройство корневое устройство? Приложения на корневом устройстве могут удалить все, что захотят.

  2. Вы использовали другое имя пакета в обновленном apk?

+0

Нет моего устройства не коренится, и имя моего пакета одинаково для каждого обновления. Я только что удалил свои данные один раз из-за какой-либо неизвестной причины, но я думаю, каждый раз, когда он не удаляется. Я проверю этот вопрос именно на следующем обновлении, и если это произойдет снова, то я обязательно буду искать предлагаемое решение. Спасибо за помощь. – Noman

+0

np, это неожиданное поведение, поэтому, возможно, вам нужно предоставить дополнительную информацию о вашем приложении или устройстве для более удобного решения.:) – StarPinkER

+0

Что относительно/data/data/PKGNAME/files/directory? Будет ли это и обновление пакета? Спасибо. – Bram

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