猿问

以共享首选项存储和检索类对象

以共享首选项存储和检索类对象

在Android中,我们可以在共享首选项中存储类的对象,并在以后检索该对象吗?

如果有可能怎么办?如果不可能做到这一点的其他可能性是什么?

我知道序列化是一种选择,但我正在寻找使用共享偏好的可能性。


绝地无双
浏览 407回答 3
3回答

浮云间

不可能。您只能在SharedPrefences SharePreferences.Editor中存储简单值您需要保存什么特别的课程?

拉莫斯之舞

我们可以使用Outputstream将Object输出到内部存储器。并转换为字符串然后保存优先。例如:    mPrefs = getPreferences(MODE_PRIVATE);     SharedPreferences.Editor ed = mPrefs.edit();     ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();     ObjectOutputStream objectOutput;     try {         objectOutput = new ObjectOutputStream(arrayOutputStream);         objectOutput.writeObject(object);         byte[] data = arrayOutputStream.toByteArray();         objectOutput.close();         arrayOutputStream.close();         ByteArrayOutputStream out = new ByteArrayOutputStream();         Base64OutputStream b64 = new Base64OutputStream(out, Base64.DEFAULT);         b64.write(data);         b64.close();         out.close();         ed.putString(key, new String(out.toByteArray()));         ed.commit();     } catch (IOException e) {         e.printStackTrace();     }当我们需要从Preference中提取Object时。使用以下代码    byte[] bytes = mPrefs.getString(indexName, "{}").getBytes();     if (bytes.length == 0) {         return null;     }     ByteArrayInputStream byteArray = new ByteArrayInputStream(bytes);     Base64InputStream base64InputStream = new Base64InputStream(byteArray, Base64.DEFAULT);     ObjectInputStream in;     in = new ObjectInputStream(base64InputStream);     MyObject myObject = (MyObject) in.readObject();
随时随地看视频慕课网APP

相关分类

Android
我要回答