欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Android中通過Intent使用Bundle傳遞對象的使用方法

 更新時間:2016年11月08日 16:20:44   作者:Snail  
這篇文章主要介紹了在Android中通過Intent使用Bundle傳遞對象的使用方法,詳細介紹Intent使用Bundle傳遞對象的方法。有需要的可以了解一下。

Android開發(fā)中有時需要在應用中或進程間傳遞對象,下面詳細介紹Intent使用Bundle傳遞對象的方法。

被傳遞的對象需要先實現序列化,而序列化對象有兩種方式:java.io.Serializable和android.os.Parcelable

Java中使用的是Serializable,而谷歌在Android使用了自定義的Parcelable。

兩種序列化方式的區(qū)別:

1.在使用內存的時候,Parcelable比Serializable性能高,推薦使用Parcelable類;

2.Serializable在序列化的時候會產生大量的臨時變量,從而引起頻繁的GC;

3.Parcelable不能使用在要將數據存儲在磁盤上的情況,因為Parcelable不能很好的保證數據的持續(xù)性在外界有變化的情況下,

這種情況建議使用Serializable。

第一步:定義序列化實體類;
Serializable方式:

/** 
 * PersonSer 
 * 
 * @author http://blog.csdn.net/zuolongsnail 
 */ 
public class PersonSer implements Serializable { 
 
  /** 
   * serialVersionUID的作用是在修改實體類后,可以正常的序列化和反序列化,在此不多說,大家可以谷歌百度下。 
   */ 
  private static final long serialVersionUID = -7620435178023928252L; 
 
  private String name; 
 
  private int age; 
 
  public String getName() { 
    return name; 
  } 
 
  public void setName(String name) { 
    this.name = name; 
  } 
 
  public int getAge() { 
    return age; 
  } 
 
  public void setAge(int age) { 
    this.age = age; 
  } 
 
} 

Parcelable方式:

/** 
 * PersonPar 
 * 
 * @author http://blog.csdn.net/zuolongsnail 
 */ 
public class PersonPar implements Parcelable { 
 
  private String name; 
 
  private int age; 
 
  public String getName() { 
    return name; 
  } 
 
  public void setName(String name) { 
    this.name = name; 
  } 
 
  public int getAge() { 
    return age; 
  } 
 
  public void setAge(int age) { 
    this.age = age; 
  } 
 
  /** 
   * 序列化實體類 
   */ 
  public static final Parcelable.Creator<PersonPar> CREATOR = new Creator<PersonPar>() { 
    public PersonPar createFromParcel(Parcel source) { 
      PersonPar personPar = new PersonPar(); 
      personPar.name = source.readString(); 
      personPar.age = source.readInt(); 
      return personPar; 
    } 
 
    public PersonPar[] newArray(int size) { 
      return new PersonPar[size]; 
    } 
  }; 
 
  @Override 
  public int describeContents() { 
    return 0; 
  } 
 
  /** 
   * 將實體類數據寫入Parcel 
   */ 
  @Override 
  public void writeToParcel(Parcel parcel, int flags) { 
    parcel.writeString(name); 
    parcel.writeInt(age); 
  } 
 
} 

第二步:傳遞序列化對象;

Intent intent = new Intent(MainActivity.this, DestActivity.class); 
Bundle bundle = new Bundle(); 
switch (v.getId()) { 
case R.id.serializable_btn: 
  // Serializable傳遞對象 
  PersonSer personSer = new PersonSer(); 
  personSer.setName("zuolong"); 
  personSer.setAge(26); 
  bundle.putSerializable(SER_KEY, personSer); 
  intent.putExtra("type", SER_TYPE); 
  intent.putExtras(bundle); 
  startActivity(intent); 
  break; 
case R.id.parcelable_btn: 
  // Parcelable傳遞對象 
  PersonPar personPar = new PersonPar(); 
  personPar.setName("snail"); 
  personPar.setAge(27); 
  // Bundle有putParcelableArray和putParcelableArrayList方法,也就可以傳遞數組和列表 
  bundle.putParcelable(PAR_KEY, personPar); 
  intent.putExtra("type", PAR_TYPE); 
  // Intent也有putParcelableArrayListExtra方法,可以傳遞實現Parcelable接口的對象列表 
  intent.putExtras(bundle); 
  startActivity(intent); 
  break; 
} 

第三步:獲取對象;

StringBuffer sb = new StringBuffer(); 
String type = getIntent().getStringExtra("type"); 
// 根據type判斷是哪種類型 
if (type.equals(MainActivity.SER_TYPE)) { 
  // 獲取Serializable對象 
  PersonSer personSer = (PersonSer) getIntent().getSerializableExtra( 
      MainActivity.SER_KEY); 
  sb.append("----From Serializable----").append("\n"); 
  sb.append("Name:").append(personSer.getName()).append("\n"); 
  sb.append("Age:").append(personSer.getAge()).append("\n"); 
} else if (type.equals(MainActivity.PAR_TYPE)) { 
  // 獲取Parcelable對象 
  PersonPar personPar = (PersonPar) getIntent().getParcelableExtra( 
      MainActivity.PAR_KEY); 
  sb.append("----From Parcelable----").append("\n"); 
  sb.append("Name:").append(personPar.getName()).append("\n"); 
  sb.append("Age:").append(personPar.getAge()).append("\n"); 
} 

運行結果截圖:

附源碼:源碼下載

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 5個Android開發(fā)中比較常見的內存泄漏問題及解決辦法

    5個Android開發(fā)中比較常見的內存泄漏問題及解決辦法

    本文主要介紹了5個Android開發(fā)中比較常見的內存泄漏問題及解決辦法,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Flutter中網絡圖片加載和緩存的實現

    Flutter中網絡圖片加載和緩存的實現

    這篇文章主要介紹了Flutter中網絡圖片加載和緩存的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Android開發(fā)之經典游戲貪吃蛇

    Android開發(fā)之經典游戲貪吃蛇

    貪吃蛇是一款足夠經典的游戲。它的經典,在于用戶操作的簡單,在于技術實現的簡介,在于他的經久不衰。下面來看下如何在Android開發(fā)這款經典游戲。
    2016-07-07
  • Android自定義View實現抽獎轉盤

    Android自定義View實現抽獎轉盤

    這篇文章主要為大家詳細介紹了Android自定義View實現抽獎轉盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Kotlin?掛起函數CPS轉換原理解析

    Kotlin?掛起函數CPS轉換原理解析

    這篇文章主要為大家介紹了Kotlin?掛起函數CPS轉換原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Android Studio常用快捷鍵功能說明

    Android Studio常用快捷鍵功能說明

    本文給大家收藏整理了關于Android Studio常用快捷鍵功能說明,需要的朋友可以參考下
    2017-10-10
  • Android開發(fā)中應用程序分享功能實例

    Android開發(fā)中應用程序分享功能實例

    這篇文章主要介紹了Android開發(fā)中應用程序分享功能,結合實例形式分析了基于Intent實現Android程序分享功能的技巧,需要的朋友可以參考下
    2016-02-02
  • 詳解androidstudio項目上傳到github方法以及步驟

    詳解androidstudio項目上傳到github方法以及步驟

    在使用studio開發(fā)的項目過程中有時候我們想將項目發(fā)布到github上,studio其實是自帶這種功能的,那么如何使用呢,下面我們就一起來了解一下
    2019-01-01
  • Android中極簡的js與java的交互庫(SimpleJavaJsBridge)

    Android中極簡的js與java的交互庫(SimpleJavaJsBridge)

    本文主要介紹了Android中極簡的js與java的交互庫--SimpleJavaJsBridge,它可以讓js與java之間的通信更簡單。 具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 詳解Andorid開發(fā)中反射機制是怎么一回事

    詳解Andorid開發(fā)中反射機制是怎么一回事

    反射機制是在運行狀態(tài)中,對于任何一個類,都可以知道這個類的所有屬性和方法,對于任何一個對象,都可以調用它所有的方法和屬性,修改部分類型信息,這種動態(tài)獲取信息以及動態(tài)調用對象方法的功能稱為Java的反射機制
    2022-11-11

最新評論