Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
221 views
in Technique[技术] by (71.8m points)

What will happen to the SharedPreferences on update an Android App?

I've stored user settings in the SharedPreferences in my App. What will happen with the SharedPreferences when I update the App via Google Play Store to a new version of the App?

Will the SharedPrefernces still be there after the update or will they be deleted?

So far I haven't found an answer on the web or Stackoverflow.

Can you point me to some links they describe this process?

Edit: Meanwhile I found an other answer as well: SharedPreferences behaviour on Update/Uninstall

Edit 2: Since time past quite a bit when I first asked this question I recently learned that since Android 6.0 (API 23) it is also possible to use the auto backup functionality to secure your shared preferences as described by Google here.

Just add the allowBackup="true" in your AndroidManifest.xml file.

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Cristian here says: your Application data will be remain when user install updates.

But it must be with the same package name to detect as an update of previous App.

EboMike in Warning Android user that app update could lead to losing data from old app version? says:

Quite frankly, losing data due to an upgrade is unacceptable.

Edit:

Normally, the SharedPreferences(as well as other user data) will be kept during the update process, but sometimes, due to some "unknown" problem, the data may get lost, and I guess it is out of your control. So, you can simply believe that the SharedPreferences will be kept(see here).

So,if you want to avoid clearing user's data in upgrading progress,you have to save main data in external storage(this can be a removable storage media,such as an SD card or an internal,non-removable, storage.) and not private for your App.Or at least put away for user to backup data before upgrading .Then in first run of your (upgraded) App,check that is there any backup file in external storage or no.

If you like to know What things must/can happen on upgrading an App?,I did not any good description for this.It is complicated and relative with Android Security,Application signing,copy protection and other topics.I mean that if you change state of your App in any above fields,it causes different result.
For example if you CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON,your App will be updated but causes all your shared preferences to get lost,file access be impossible and ... .
You although have to be care in about conditions cause your new App being considered as an update for previous App(see Things That Cannot Change).

Also you have to be care in about your code,it may be caused deleting data of your databases(see update app with preloaded SQLite).

But ultimately, if be careful,you can say:

The update process only replaces the apk file(and so what is in it for example drawables,...) and does not alter databases,sharedpreferences and any other files that generated in run time(probably in this case,new App is installed with the UID that is equal to UID of previous App).

You can see these pages for more details:

Help!? Updating our applicatoin on the market deletes the saved SharedPreferences.
Market copy protection totally breaks file access after updating
Can someone explain the App update process?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...