4 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
關(guān)于在Activity之間傳對(duì)像,最好的方法就是共享內(nèi)存。
設(shè)計(jì)一個(gè)類(lèi)作為單例模式,如下
public class Share { private static Share current; public static Share getInstance() { synchronized (Share.class) { if(current == null) { current = new Share(); } return current; } } final HashMap<String, Object> memoryMap; public Share() { memoryMap = new HashMap<String, Object>(); } public void put(String key, Object value) { memoryMap.put(key, value); } public Object get(String key) { return memoryMap.get(key); }
}
然后在Activity1里傳一個(gè)key字符串值到Activity2里,再在Activity2里去獲取Share里的對(duì)象,這樣子既不用序列化也減少序列化所使用時(shí)間 ,總之,方便,快捷

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果是同一個(gè)進(jìn)程中且即傳即用,可考慮直接用全局變量靜態(tài)變量,即直接在ActivityB定義public static LinkedHashMap mLinkedHashMap,然后在ActivityA中直接寫(xiě)ActivityB. mLinkedHashMap= xxx賦值,在ActivityB啟動(dòng)時(shí)直接讀取mLinkedHashMap。由于傳過(guò)去之后馬上就使用,因此不用擔(dān)心內(nèi)存不足被釋放之類(lèi)的問(wèn)題。
如果是不同進(jìn)程,就只能做系列化反系列化了。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
只能轉(zhuǎn)化到HashMap,轉(zhuǎn)化會(huì)失敗
我傳個(gè)字符串轉(zhuǎn)為HashMap成功了,一步到位好像有難度,你再加油摸索一下
(你若傳對(duì)象,那個(gè)class像似要繼承Serializable接口)
//mainActivity2
if (getIntent().getSerializableExtra("OBJECTS_LINKED_HASHMAP") != null){ Bundle bundle2 = this.getIntent().getExtras(); HashMap<String, Object> user_info = (HashMap<String, Object>) bundle2.getSerializable("OBJECTS_LINKED_HASHMAP"); String str = user_info.toString(); System.out.println("Got str:"+str); // Got str:{TEST=this is a test} }
//mainActivity1
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>(); mLinkedHashMap.put("TEST", "this is a test"); Bundle bundle = new Bundle(); bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap); Intent intent = new Intent(this, UserActivity.class); intent.putExtras(bundle); startActivity(intent);
添加回答
舉報(bào)