Monodroid将parcelable对象捆绑

时间:2012-03-20 13:20:18

标签: android bundle xamarin.android parcelable

所以我一直在努力将一些值放入我的重写OnSaveInstanceState中。我需要在活动重启时保存一些类对象,这意味着它们必须是可分配的,这对于Monodroid似乎是不可能实现的?

来源:http://docs.xamarin.com/android/about/limitations

如何在没有parcelable的情况下将这些类对象保存到包中?我从服务器加载数据,我不希望再次这样做,例如在用户轮换上,再次调用OnCreate方法。因此将它们保存起来会很好,这可以为服务器节省偶尔旋转等压力。

2 个答案:

答案 0 :(得分:5)

这个问题最初接受的答案虽然在答案时是真的,但现在已不再适用。

我最初实施了上述建议,然后通过更多搜索找到了这个:

http://dan.clarke.name/2012/09/implementing-iparcelable-in-mono-for-android/

现在支持该功能,上述链接是如何实现它的绝佳资源。

答案 1 :(得分:4)

无法在Mono for Android中实现IParcelable界面。取自the docs

  

此时无法实现IParcelable接口,因为   android.os.Parcelable接口需要:

     
      
  • 实现Parcelable接口的类还必须有一个名为CREATOR的静态字段,它是实现
    的对象   Parcelable.Creator界面。
  •   
     由于mandroid.exe目前无法生成字段,因此这个界面   无法实施。将来的版本中将添加支持。

您可以采取的另一种方法是将对象存储在活动之外,例如在子类Application的类中。您可以使用静态属性将数据存储在应用程序类中,也可以使用活动中的Application属性访问其上的实例属性/方法。有关使用应用程序的更多详细信息,请参阅this question