2013-02-12 44 views
5

मैं एक कस्टम ऑब्जेक्ट (चलिए इसे MyObject कहते हैं) को स्थायी रूप से स्टोर करना चाहता हूं ताकि अगर इसे स्मृति से हटा दिया गया हो, तो मैं ऐप फिर से शुरू होने पर रीज्यूम() विधि पर अपनी गतिविधि/खंड में इसे पुनः लोड कर सकता हूं।स्थायी रूप से पार्सल करने योग्य कस्टम ऑब्जेक्ट को कैसे स्टोर करें?

मैं यह कैसे कर सकता हूं? साझा किए गए संदर्भों में पार्सेलबल ऑब्जेक्ट्स को संग्रहीत करने की विधि प्रतीत नहीं होती है। अपने

उत्तर

21

यदि आपको इसे साझा प्रिंटर में संग्रहीत करने की आवश्यकता है, तो आप अपनी ऑब्जेक्ट को जेसन स्ट्रिंग पर पार्स कर सकते हैं और स्ट्रिंग को स्टोर कर सकते हैं।

private Context context; 
private MyObject savedObject; 
private static final String PREF_MY_OBJECT = "pref_my_object"; 
private SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
private Gson gson = new GsonBuilder().create(); 

public MyObject getMyObject() { 
    if (savedObject == null) { 
     String savedValue = prefs.getString(PREF_MY_OBJECT, ""); 
     if (savedValue.equals("")) { 
      savedObject = null; 
     } else { 
      savedObject = gson.fromJson(savedValue, MyObject.class); 
     } 
    } 

    return savedObject; 
} 

public void setMyObject(MyObject obj) { 
    if (obj == null) { 
     prefs.edit().putString(PREF_MY_OBJECT, "").commit(); 
    } else { 
     prefs.edit().putString(PREF_MY_OBJECT, gson.toJson(obj)).commit(); 
    } 
    savedObject = obj; 
} 

class MyObject { 

} 
2

आप लिख सकते हैं Bundle डिस्क के लिए एक पार्सल के रूप में, तो Parcel बाद में मिलता है और Parcel.readBundle() विधि का उपयोग अपने Bundle वापस पाने के लिए।

+3

डिस्क पर पार्सल के रूप में आप बंडल कैसे लिखते हैं? –