Android 頁面之間數(shù)據(jù)傳遞方式有幾種?各有何優(yōu)勢如果頁面之間有直接關(guān)系

(1)如Activity和在它之內(nèi)的Fragment,可以直接通過接口的調(diào)用來傳遞數(shù)據(jù)。

優(yōu)勢:直接,方便。?

劣勢:代碼耦合性較高

(2)如果是兩個Activity之間傳遞數(shù)據(jù),有界面切換的過程的話,可以用startActivity或startActivityForResult。用其中的intent參數(shù)攜帶數(shù)據(jù)。優(yōu)勢:一般用于初始化Activity和調(diào)用系統(tǒng)功能

(3)如果頁面之間傳遞數(shù)據(jù)沒有頁面切換的過程,可以通過廣播的方式,sendBroadcast(intent);要接受數(shù)據(jù)的頁面注冊這個廣播就行了。 ? ?優(yōu)勢:代碼耦合性低,易重構(gòu),適用范圍廣。

缺點(diǎn):數(shù)據(jù)需要序列化和反序列化,代碼較多 ?

(4)通過存儲介質(zhì)來分享數(shù)據(jù),如頁面A將數(shù)據(jù)存入數(shù)據(jù)庫,SharedPreferences,文件,Internet。頁面B通過讀取它們來得到數(shù)據(jù) ? ? ??

優(yōu)勢:數(shù)據(jù)保存時(shí)間長,不受到界面生命周期的影響?

缺點(diǎn):讀取速度較慢,需要異步操作 ? ?

(5)采用事件總線的方式,注冊和接收事件(數(shù)據(jù)),其中的代表者是EventBus,頁面需要指定和注冊接收事件的類型 ??

優(yōu)勢:不用序列化數(shù)據(jù),適用范圍大 ?

缺點(diǎn):需要學(xué)習(xí)使用

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

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

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