I need to retain a complex object in my service, so I can reliably come back to it (it holds updates). Initially I coded it just as a class filed in my Service implementation but I'm observing that the updates object is periodically reset to null which tells me that server class itself is recreated. Can someone recommend lightweight reliable strategy to save and recreate such updates object (I can make it serializable)
When your service is restarted, the onStop() and onStart() methods are called. You can use the onStop() method to save your data to a persistent location, e.g. an application sqlite database. You can restore the data when onStart() is called.
You can read about using an sqlite database on the android developer website: http://developer.android.com
If I was doing it, I would use SharedPreferences. If it's too complex for that, I agree with @Scharrels about using a sqlite DB (which would, most likely, be the Google recommendation since their examples use sqlite in the smallest of cases, which implies it has a reasonable level of performance).
I've found SharedPreferences to be useful in a number of cases. First, being a key-value pairing store, a variety of different data can easily be stored, plus you could encode your objects into a string, if need be, and store them in a single field. Second, you can use multiple SharedPreference stores by simply retrieving ones under a different name (while still keeping them private). Finally, I find them easy to use since getting data and storing data is literally only a couple of lines of code (not counting any data munging or serialization you might need).