在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。
同時,使用靜態類去存儲大量數據也是可行的,主要考慮好并發寫和同步讀取的問題。

慕仙森
TA貢獻1827條經驗 獲得超8個贊
弄一個application下的setter和getter就能達到你的要求,就不用靜態變量了,組件之間不建議使用靜態變量傳值。組件間應該考慮數據值的交換傳遞而不是對象引用,要降低耦合度。

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
兩種思路:本質是把共享的量存于生命周期長的環境:如static量或android app中的application里, 生命周期最長的就是持久化的方式了。。。
若場景僅是activity間的共享, 相對來說并發的問題就很輕, 因為大都是串行的操作。
添加回答
舉報
0/150
提交
取消