亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android多個activity之間傳遞/共享對象的處理

Android多個activity之間傳遞/共享對象的處理

牛魔王的故事 2019-02-19 07:23:32
在android的開發過程中經常會遇到在activity之間傳遞數據的情況,如果只是基礎類型或者String,直接放入intent就可以,這個沒什么問題,但如果是對象呢?用intent的話,無論parcelable還是serializable,都是一個copy,有大小和性能的限制,而且我現在想傳遞的是同一個對象?,F在我能想到的只有通過靜態變量傳遞,大概是這樣的寫法: public Constant{ public static TestObject object; public static void setTemp(TestObject object){ this.object = object; } public static TestObject getTemp(){ TestObject temp = object; object = null; return temp; } } 大家認為這樣的寫法有什么缺點,或者有其他辦法可以實現嗎?
查看完整描述

6 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我覺得你還是應該實現Parcelable接口,然后通過Intent.putExtra()傳遞即可。Google通過Parcelable對對象做序列化的性能比你想的要高的多,不可能成為你當前程序性能的瓶頸。

如果Intent的參數超size,可以考慮將大對象序列化到本地文件,然后傳遞URI過去。類似的存儲中介還有ShreadPreference和SQLite。

同時,使用靜態類去存儲大量數據也是可行的,主要考慮好并發寫和同步讀取的問題。

查看完整回答
反對 回復 2019-03-01
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

弄一個application下的setter和getter就能達到你的要求,就不用靜態變量了,組件之間不建議使用靜態變量傳值。組件間應該考慮數據值的交換傳遞而不是對象引用,要降低耦合度。

查看完整回答
反對 回復 2019-03-01
?
達令說

TA貢獻1821條經驗 獲得超6個贊

可以使用 Eventbus

查看完整回答
反對 回復 2019-03-01
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

不知道你遇到的“大小和性能的限制” 限制在何處
傳個對象什么的RxBus 好頂贊

查看完整回答
反對 回復 2019-03-01
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

兩種思路:本質是把共享的量存于生命周期長的環境:如static量或android app中的application里, 生命周期最長的就是持久化的方式了。。。
若場景僅是activity間的共享, 相對來說并發的問題就很輕, 因為大都是串行的操作。

查看完整回答
反對 回復 2019-03-01
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

一 使用Eventbus傳遞。
二 使用枚舉。

查看完整回答
反對 回復 2019-03-01
  • 6 回答
  • 0 關注
  • 873 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號