(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í)使用