Activity通過(guò)setArguments傳遞到Fragment的Bundle數(shù)據(jù)是傳引用還是傳值?

在Android開(kāi)發(fā)中,我們通過(guò)Intent/Bundle在組件之間(Activity/Services/ContentProvider/BroadcastReceivers)傳遞數(shù)據(jù),由于組件之間通信方式是 IPC,因此只能通過(guò)數(shù)據(jù)流(byte[])的方式傳遞Bundle,所以目標(biāo)組件所獲取的數(shù)據(jù)是一個(gè)新對(duì)象,組件間傳遞的Bundle數(shù)據(jù)是傳值。

那么,Activity通過(guò)setArguments傳遞到Fragment的Bundle數(shù)據(jù)是傳引用還是傳值?
答案是:
(1)絕大多數(shù)的情況下是傳引用
由于Activity向Fragment發(fā)送參數(shù)并不是IPC過(guò)程,所以傳遞的Bundle數(shù)據(jù)是傳引用,
Fragment從Bundle中獲取到的對(duì)象與Activity所發(fā)送的對(duì)象就是同一對(duì)象。
(2)特殊情況下是傳值
當(dāng)內(nèi)存不足等特殊情況下,F(xiàn)ragment在被銷毀時(shí)將會(huì)以數(shù)據(jù)流(byte[])的方式保存Bundle,以便在Fragment重新恢復(fù)時(shí)重新創(chuàng)建Bundle,這種情況下,Activity向Fragment發(fā)送參數(shù)是傳值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容