본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Activity 의 상태 저장. Object 형태로. ( Serializable 과 Parcelable 을 이용한 방법 )

by 돼지왕 왕돼지 2012. 2. 19.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 Activity 의 상태 저장 중 Object 를 저장하는 방법에 대해 알아보겠습니다.
저장은 Serializable 과 Parcelable 을 이용한 방법, 이 두가지 방법이 있는데 모두 알아보겠습니다.


2012/01/25 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] Serializable이 뭔가요? Serializable class 를 만들 때 serial Version UID 가 필요한 이유를 아시나요?
 

2012/01/25 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] IPC( 프로세스간 통신 ) 을 위한 Parcelable Object 만들기. 어렵지 않아요. 함께 만들어봐요.




Serializable 을 이용하는 방법.

 

public void onCreate( Bundle savedInstanceState ){
   if (savedInstaceState == null){
       arVertex = new ArrayList<Vertex>();
   }
   else{
      arVertex = (ArrayList<Vertex>)savedInstanceState.getSerializable( "Curve" );
   }
}
 
public void onSaveInstaceState(Bundle outState){
   outState.putSerializable( "Curve", arVertex );
}
 
public class Vertex implements Serializable{
   private static final long serialVersionUID = 100L;
   Vertex(float ax, float ay, boolean ad){
      // To do
   }
}

 
 


Parcelable 을 이용한 방법.

  

class Vertex implements Parcelable{
   Vertex(float ax, float ay, boolean ad){
      // To Do
   }
 
   public int describeContents(){
      return 0;
   }
 
   public void writeToParcel(Parcel dest, int flags){
      dest.writeFloat(x);
      dest.writeFloat(y);
      dest.writeBooleanArray(new boolean[] {True});
   }
 
   public static final Parcelable.Creator<Vertex> CREATOR = new Creator<Vertex>(){
      public Vertex createFromParcel(Parcel source){
         int x = source.readInt();
         int y = source.readInt();
         boolean[] td = new boolean[1];
         source.readBooleanArray(td);
         return new Vertex(x, y, td[0]);
      }
 
      public Vertex[] newArray(int size){
         return new Vertex[size];
      }
   }

public void onCreate( Bundle savedInstanceState ){ 
   if (savedInstanceState == null){
      arVertex = new ArrayList<Vertex>();
   }
   else{
      arVertex = savedInstanceState.getParcelableArrayList("Curve");
   }
 
public void onSaveInstanceState(Bundle outState){
   outState.putParcelableArrayList( "Curve", arVertex );
}



로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글