Android 中Parcelable的作用
非原創,摘自JAVA
android提供了一種新的類型:Parcel。本類被用作封裝數據的容器,封裝后的數據可以通過Intent或IPC傳遞。
外,只有實現了Parcelable接口的類才能被放入Parcel中。
Parcelable實現要點:需要實現三個東西
1)writeToParcel 方法。該方法將類的數據寫入外部提供的Parcel中.聲明如下:
writeToParcel (Parcel dest, int flags) 具體參數含義見javadoc
2)describeContents方法。沒搞懂有什么用,反正直接返回0也可以
3)靜態的Parcelable.Creator接口,本接口有兩個方法:
createFromParcel(Parcel in) 實現從in中創建出類的實例的功能
newArray(int size) 創建一個類型為T,長度為size的數組,僅一句話(return new T[size])即可。估計本方法是供外部類反序列化本類數組使用。
測試用的接收信息Activity
-
import
android.app.Activity; -
- import
android.content.Intent; -
- import
android.os.Bundle; - import
android.os.Parcelable; -
- public
class Test extendsActivity { -
-
-
void onCreate(Bundle savedInstanceState) { -
-
setContentView(R.layout.main); -
Intent i = getIntent(); -
Person p = i.getParcelableExtra( -
System.out.println( -
System.out.println( -
} - }
發送的Activity
- import
java.util.HashMap; -
- import
android.app.Activity; - import
android.content.Intent; - import
android.os.Bundle; -
- public
class TestNew extendsActivity { -
-
-
void onCreate(Bundle savedInstanceState) { -
-
setContentView(R.layout.main); -
Intent intent = Intent(); -
Person p = Person(); -
p.map = HashMap<String,String>(); -
p.map.put( "ido"); -
p.name= -
intent.putExtra( p); -
intent.setClass( Test. class); -
startActivity(intent); -
} - }
Parcelable的實現類
- import
java.util.HashMap; -
- import
android.os.Parcel; - import
android.os.Parcelable; -
- public
class Person implementsParcelable { -
-
HashMap<String,String> newmap = HashMap<String,String> (); -
-
String name ; -
-
int describeContents() { -
0; -
} -
-
-
void writeToParcel(Parcel intdest, flags) { -
-
dest.writeMap(map); -
dest.writeString(name); -
} -
static final Parcelable.Creator<Person> newCREATOR = Parcelable.Creator<Person>() { - //重寫Creator
-
-
-
Person createFromParcel(Parcel source) { -
Person p = Person(); -
p.map=source.readHashMap(HashMap. -
p.name=source.readString(); -
p; -
} -
-
-
Person[] intnewArray( size) { -
TODO Auto-generated method stub -
null; -
} -
}; -
- }
本文由用戶 hutuanle 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!