Intent传递数据时,可以传递哪些类型数据
Intent傳遞數(shù)據(jù)時(shí),下列的數(shù)據(jù)類型哪些可以被傳遞(abcd)(多選)
??????A、Serializable??B、charsequence?C、Parcelable??D、Bundle
除了上面的還能傳遞基本數(shù)據(jù)類型(byte/boolean/char/short/int/float/long/double)、String/StringBuffer/StringBuilder類型
Serializable :將?Java?對(duì)象序列化為二進(jìn)制文件的 Java 序列化技術(shù)是 Java系列技術(shù)中一個(gè)較為重要的技術(shù)點(diǎn),在大部分情況下,開(kāi)發(fā)人員只需要了解被序列化的類需要實(shí)現(xiàn) Serializable 接口,使用ObjectInputStream 和 ObjectOutputStream 進(jìn)行對(duì)象的讀寫。
charsequence??:
在JDK1.4中,引入了CharSequence接口,實(shí)現(xiàn)了這個(gè)接口的類有:CharBuffer、String、StringBuffer、StringBuilder這個(gè)四個(gè)類。
CharBuffer為nio里面用的一個(gè)類,String實(shí)現(xiàn)這個(gè)接口理所當(dāng)然,StringBuffer也是一個(gè)CharSequence,StringBuilder是Java抄襲C#的一個(gè)類,基本和StringBuffer類一樣,效率高,但是不保證線程安全,在不需要多線程的環(huán)境下可以考慮。
提供這么一個(gè)接口,有些處理String或者StringBuffer的類就不用重載了。但是這個(gè)接口提供的方法有限,只有下面幾個(gè):charat、length、subSequence、toString這幾個(gè)方法,感覺(jué)如果有必要,還是重載的比較好,避免用instaneof這個(gè)操作符。
Parcelable??:
Android提供了一種新的類型:Parcel。本類被用作封裝數(shù)據(jù)的容器,封裝后的數(shù)據(jù)可以通過(guò)Intent或IPC傳遞。?除了基本類型以
外,只有實(shí)現(xiàn)了Parcelable接口的類才能被放入Parcel中。
是GOOGLE在安卓中實(shí)現(xiàn)的另一種序列化,功能和Serializable相似,主要是序列化的方式不同
利用Parcelable接口實(shí)現(xiàn)數(shù)據(jù)通過(guò)Intent/Bundle進(jìn)行傳遞public class PersonInfo implements Parcelable
{
public String iName; // 人名
publicint iSex; // 性別
public String iId; // 身份證號(hào)碼
public String iMobileNumber; // 手機(jī)號(hào)碼
public String iEMailAddr; // 郵箱地址
// From Parcelable
@Override
publicint describeContents()
{
return0;
}
// From Parcelable
// 保存到包裹中
@Override
publicvoid writeToParcel(Parcel dest, int flags)
{
dest.writeString(iName);
dest.writeInt(iSex);
dest.writeString(iId);
dest.writeString(iMobileNumber);
dest.writeString(iEMailAddr);
}
// 實(shí)現(xiàn)Parcelable接口的類型中,必須有一個(gè)實(shí)現(xiàn)了Parcelable.Creator接口的靜態(tài)常量成員字段,
// 并且它的名字必須為CREATOR的
publicstaticfinal Parcelable.Creator<PersonInfo> CREATOR
=new Parcelable.Creator<PersonInfo>()
{
// From Parcelable.Creator
@Override
public PersonInfo createFromParcel(Parcel in)
{
PersonInfo brief =new PersonInfo();
// 從包裹中讀出數(shù)據(jù)
brief.iName = in.readString();
brief.iSex = in.readInt();
brief.iId = in.readString();
brief.iMobileNumber = in.readString();
brief.iEMailAddr = in.readString();
return brief;
}
// From Parcelable.Creator
@Override
public PersonInfo[] newArray(int size)
{
returnnew PersonInfo[size];
}
};
}
Bundle:Bundle是將數(shù)據(jù)傳遞到另一個(gè)上下文中或保存或回復(fù)你自己狀態(tài)的數(shù)據(jù)存儲(chǔ)方式。它的數(shù)據(jù)不是持久化狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的Intent传递数据时,可以传递哪些类型数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c++ 编译添加dll_通达信DLL编程
- 下一篇: UNIX TCP回射服务器/客户端之使用