如何将不可仿造且不可序列化的对象插入捆绑

时间:2018-07-12 18:14:13

标签: android twitter bundle serializable

我正在使用Android的twitter API。 从呼叫中,返回“ Tweet”对象的列表。我想在需要时将此列表保存到我的savedInstanceBundle中,因此不必再次进行大的http调用。问题在于“ Tweet”没有实现可仿造或可序列化的功能,因此我无法将其输入到捆绑软件中。

我有什么选择?

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
        }

2 个答案:

答案 0 :(得分:2)

您也不能执行doc中提到的操作。通过之前,您可以使用Serializableparcelable使物体成为元帅。

另一种可以使用数据交换格式,例如JSONXML或任何其他格式的方法。但是这样一来,为元帅和非元帅写的就更多了。因此,最好使用Bundle.putParcelable/Bundle.getParcelableBundle.putSerializable/Bundle.getSerializable

这还取决于您将Object传递到的确切位置。您应该看看Be Careful Where You Use Custom Parcelables。 Scholar Commansware的博客之一。

如果在前台应用程序时需要在对象之间传递对象之间的距离,那么Parcelables是最好的方法。

答案 1 :(得分:1)

不能。您所能做的就是从中获取信息,创建自己的可打包或可序列化的对象,然后发送该对象。