Android中Parcelable的作用實(shí)例解析
在android提供了一種類型:Parcel。被用作封裝數(shù)據(jù)的容器,封裝后的數(shù)據(jù)可以通過(guò)Intent或IPC傳遞。 除了基本類型以外,只有實(shí)現(xiàn)了Parcelable接口的類才能被放入Parcel中。
Parcelable實(shí)現(xiàn)要點(diǎn):需要實(shí)現(xiàn)三個(gè)東西
1)writeToParcel 方法。該方法將類的數(shù)據(jù)寫入外部提供的Parcel中.聲明如下:
writeToParcel (Parcel dest, int flags) 具體參數(shù)含義見(jiàn)javadoc
2)describeContents方法。沒(méi)搞懂有什么用,反正直接返回0也可以
3)靜態(tài)的Parcelable.Creator接口。本接口有兩個(gè)方法:
createFromParcel(Parcel in) 實(shí)現(xiàn)從in中創(chuàng)建出類的實(shí)例的功能
newArray(int size) 創(chuàng)建一個(gè)類型為T,長(zhǎng)度為size的數(shù)組,僅一句話(return new T[size])即可。估計(jì)本方法是供外部類反序列化本類數(shù)組使用。
測(cè)試用的接收信息Activity:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
public class Test extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = getIntent();
Person p = i.getParcelableExtra("yes");
System.out.println("---->"+p.name);
System.out.println("---->"+p.map.size());
}
}
發(fā)送的Activity:
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class TestNew extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
Person p = new Person();
p.map = new HashMap<String,String>();
p.map.put("yes", "ido");
p.name="ok";
intent.putExtra("yes", p);
intent.setClass(this, Test.class);
startActivity(intent);
}
}
Parcelable的實(shí)現(xiàn)類:
import java.util.HashMap;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
public HashMap<String,String> map = new HashMap<String,String> ();
public String name ;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeMap(map);
dest.writeString(name);
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
//重寫Creator
@Override
public Person createFromParcel(Parcel source) {
Person p = new Person();
p.map=source.readHashMap(HashMap.class.getClassLoader());
p.name=source.readString();
return p;
}
@Override
public Person[] newArray(int size) {
// TODO Auto-generated method stub
return null;
}
};
}
- Android序列化實(shí)現(xiàn)接口Serializable與Parcelable詳解
- Android中Parcelable的使用詳解
- Android序列化之Parcelable和Serializable的使用詳解
- 在Android Studio中Parcelable插件的簡(jiǎn)單使用教程
- Android Parcelable接口使用方法詳解
- Android Parcelable與Serializable詳解及區(qū)別
- 很詳細(xì)的android序列化過(guò)程Parcelable
- Android中的Parcelable序列化對(duì)象
- Android Parcleable接口的調(diào)用源碼層分析
相關(guān)文章
完美解決MybatisPlus插件分頁(yè)查詢不起作用總是查詢?nèi)繑?shù)據(jù)問(wèn)題
這篇文章主要介紹了解決MybatisPlus插件分頁(yè)查詢不起作用總是查詢?nèi)繑?shù)據(jù)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)
這篇文章主要介紹了mybatis執(zhí)行批量更新batch update 的方法,提供oracle和mysql兩種方法,非常不錯(cuò),需要的朋友參考下2017-01-01
解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問(wèn)題
這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Java發(fā)送https請(qǐng)求代碼實(shí)例
這篇文章主要介紹了Java發(fā)送https請(qǐng)求代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
教你利用springboot集成swagger并生成接口文檔
有很多小伙伴不會(huì)利用springboot集成swagger并生成接口文檔,今天特地整理了這篇文章,文中有非常詳細(xì)的代碼圖文介紹及代碼示例,對(duì)不會(huì)這個(gè)方法的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05

