How to serialize a Bundle?

后端 未结 4 630
青春惊慌失措
青春惊慌失措 2020-12-03 07:12

I\'d like to serialize a Bundle object, but can\'t seem to find a simple way of doing it. Using Parcel doesn\'t seem like an option, since I want to store the serialized dat

4条回答
  •  暖寄归人
    2020-12-03 08:05

    I use SharedPreferences to get around that limitation, it uses the same putXXX() and getXXX() style of storing and retrieving data as the Bundle class does and is relatively simple to implement if you have used a Bundle before.

    So in onCreate I have a check like this

    if(savedInstanceState != null)
    {
        loadGameDataFromSavedInstanceState(savedInstanceState);
    }
    else
    {
        loadGameDataFromSharedPreferences(getPreferences(MODE_PRIVATE));
    }
    

    I save my game data to a Bundle in onSaveInstanceState(), and load data from a Bundle in onRestoreInstanceState()

    AND

    I also save game data to SharedPreferences in onPause(), and load data from SharedPreferences in onResume()

    onPause()
    {
        // get a SharedPreferences editor for storing game data to
        SharedPreferences.Editor mySharedPreferences = getPreferences(MODE_PRIVATE).edit();
    
        // call a function to actually store the game data
        saveGameDataToSharedPreferences(mySharedPreferences);
    
       // make sure you call mySharedPreferences.commit() at the end of your function
    }
    
    onResume()
    {
        loadGameDataFromSharedPreferences(getPreferences(MODE_PRIVATE));
    }
    

    I wouldn't be surprised if some people feel this is an incorrect use of SharedPreferences, but it gets the job done. I have been using this method in all my games (nearly 2 million downloads) for over a year and it works.

提交回复
热议问题