如何在onSaveInstanceState中保存自定义类的实例?

jul*_*jul 37 android

我创建了一个自定义类RestaurantList的实例来保存我的数据(从Web服务接收的餐馆数据列表作为json数据).

我该如何保存onSaveInstanceState

Maa*_*lte 57

自定义对象在实现接口时可以保存在Bundle中Parcelable.然后可以通过以下方式保存:

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("key", myObject);
    }
Run Code Online (Sandbox Code Playgroud)

基本上,必须在类文件中实现以下方法:

 public class MyParcelable implements Parcelable {
     private int mData;

     public int describeContents() {
         return 0;
     }

     /** save object in parcel */
     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

     public static final Parcelable.Creator<MyParcelable> CREATOR
             = new Parcelable.Creator<MyParcelable>() {
         public MyParcelable createFromParcel(Parcel in) {
             return new MyParcelable(in);
         }

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     };

     /** recreate object from parcel */
     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
 }
Run Code Online (Sandbox Code Playgroud)

  • 与parcelable相比,我发现从JSON转换回来的工作要少一些 (5认同)
  • onSaveInstanceState 应该在函数的末尾!https://developer.android.com/training/basics/activity-lifecycle/recreating.html (2认同)