Android Intent 傳遞值的幾種方案和對比

經常有人會問Android 傳值問題,抽空寫篇文章分享下

 

在Android中,我們會經常進行頁面跳轉和傳遞值,比如Activity to Activity,Activity to Fragment(使用Bundle  setArgument()),等各種辦法,

 

如果傳遞的是普通的數據類型(整形,浮點型,字符,String等) 可以直接putExtra,然後另外一個界面直接getIntent.getXXExtra.

如果是對象,那麼我們需要對對象進行序列化,有兩種序列化的方式:

    實現

第一種:

Serializable 接口  可以不寫任何實現方法  因爲這個接口沒有定義方法  這個會影響IO 並且讀寫速度略慢與第二種(JAVA 自帶)

 第二種:

Parceable 接口 (推薦  這是安卓自帶的) 這個接口會把對象進行序列化,寫入二進制流,然後對每個字段進行序列化。

但需要複寫幾個方法

 

 

 

然後必須寫一個構造方法 

 

相對於第一種 會比較麻煩點  但是效率和性能會提升N倍 推薦第二種方式

 

取出對象

 

注意:如果是Bean類裏面包含List 那麼該內部類也得實現接口

第三種:AIDL ...

 

第四種:廣播 。。。

等等。。。

 

但是如果Intent傳遞的數據過大  大於1M 系統會拋出一個異常:TransactionTooLargeException

 

 

常用的解決方案:

1.如果對象裏面的屬性有的不需要,或者只需要一個id,那麼我們可以直接傳遞id,或者其他的字段

2.通過Applition

3.通過static ,但會容易造成內存泄露

4.持久化

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章