如何将不可分割和不可序列化的对象插入 Bundle
How to insert non-parceable and non-serializable object into Bundle
我正在为 android 使用 Twitter API。
从调用中,返回 'Tweet' 个对象的列表。我想在需要时将此列表保存到我的 savedInstanceBundle 中,这样我就不必再次进行大型 http 调用。问题是 'Tweet' 没有实现 parceable 或 serializable,所以我不能将它输入到包中。
我有哪些选择?
Call<List<Tweet>> lookup = apiclient.getStatusesService().lookup(ids, true, false, false);
lookup.enqueue(new Callback<List<Tweet>>() {
@Override
public void success(Result<List<Tweet>> result) {
Response response = result.response;
List<Tweet> tweets = result.data; //what I'd like to save
}
你不能。您所能做的就是从中获取信息,创建您自己的 Parcelable 或 Serializable 对象,然后发送它。
你不能这样做,它也在文档中提到。对象在传递之前应该是 Marshal,因为你可以使用 Serializable
或 parcelable
.
另一种方法是使用数据交换格式,例如 JSON
或 XML
或任何其他 .但是这种方式将更多地为编组和解编组编写。所以你最好使用 Bundle.putParcelable/Bundle.getParcelable
或 Bundle.putSerializable/Bundle.getSerializable
.
这还取决于您传递 Object 的确切位置。你应该看看 Be Careful Where You Use Custom Parcelables 。 Scholar Commansware 的博客之一。
如果您需要在前台应用程序时在组件之间传递对象,那么 Parcelables
是最好的方法。
我正在为 android 使用 Twitter API。 从调用中,返回 'Tweet' 个对象的列表。我想在需要时将此列表保存到我的 savedInstanceBundle 中,这样我就不必再次进行大型 http 调用。问题是 'Tweet' 没有实现 parceable 或 serializable,所以我不能将它输入到包中。
我有哪些选择?
Call<List<Tweet>> lookup = apiclient.getStatusesService().lookup(ids, true, false, false);
lookup.enqueue(new Callback<List<Tweet>>() {
@Override
public void success(Result<List<Tweet>> result) {
Response response = result.response;
List<Tweet> tweets = result.data; //what I'd like to save
}
你不能。您所能做的就是从中获取信息,创建您自己的 Parcelable 或 Serializable 对象,然后发送它。
你不能这样做,它也在文档中提到。对象在传递之前应该是 Marshal,因为你可以使用 Serializable
或 parcelable
.
另一种方法是使用数据交换格式,例如 JSON
或 XML
或任何其他 .但是这种方式将更多地为编组和解编组编写。所以你最好使用 Bundle.putParcelable/Bundle.getParcelable
或 Bundle.putSerializable/Bundle.getSerializable
.
这还取决于您传递 Object 的确切位置。你应该看看 Be Careful Where You Use Custom Parcelables 。 Scholar Commansware 的博客之一。
如果您需要在前台应用程序时在组件之间传递对象,那么 Parcelables
是最好的方法。