Android中的Parcel是什麼

來源:互聯網
上載者:User

    Parcel,翻譯過來是“打包”的意思。打包幹什麼呢?是為了序列化。

    如果要在進程之間傳遞一個整數,很簡單,直接傳就是行了;如果要傳一個字串,就稍微複雜了點:需先分配一塊可以容納字串的記憶體,然後將字串複製到記憶體中,再傳遞(新手可能問:為啥不直接把字串的引用傳過去呢?學過C/C++的地球人都知道:進程有自己的記憶體位址空間,一個進程中的1000地址可能在另一個進程中是100000,java對象的引用跟本上還是記憶體位址);再如果要傳遞一個類的執行個體呢?也是先為類分配記憶體,然後複製一份再傳遞可以嗎?我認為不可以,我至少可以找到一個理由:類中成員除了屬性還有方法,即使屬效能完整傳過去,但還有方法呢?方法是獨立於類對象存在的,所以到另一個進程中再引用同一個方法就要出錯了,還是因為獨立地址空間的原因。

    Android開發中,很經常在各activity之間傳遞資料,而跟據Android的設計架構,即使同一個程式中的Activity都不一定運行在同一個進程中,所以處理資料傳遞時你不能老假設兩個activity都運行於同一進程,那麼只能按進程間傳遞資料來處理,使之具有最廣泛的適應性。

  那麼到底如何在進程之間傳遞類對象呢?簡單來說可以這樣做:在進程A中把類中的非預設值的屬性和類的唯一標誌打成包(這就叫序列化),把這個包傳遞到進程B,進程B接收到包後,跟據類的唯一標誌把類建立出來,然後把傳來的屬性更新到類對象中,這樣進程A和進程B中就包含了兩個完全一樣的類對象。

  下一篇再具體講Parcel吧,待續... 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.