課程
/移動開發
/Android
/Android實現跨進程通信
在刪除監聽的時候刪除不了,是因為在跨進程的時候對象被重新反序列化了。但是在添加監聽的時候也會反序列化,會重新生成一個對象,為什么還會回調到主進程呢?求解答
2020-04-08
源自:Android實現跨進程通信 4-7
正在回答
首先你這是兩個問題,之所以用arraylist不行,是因為arraylist只是簡單根據元素是否相等去增加刪除,所以由于序列化的問題前后已經不是一個對象了,那么自然刪不掉,而用RemoteCallbackList可以,是因為內部使用的Ibinder來唯一標識的,所以可以刪掉,而后續也是在此基礎上,remote進程調用了主進程的消息接收服務。而消息類也加了in關鍵字,所以對象進行了寫入的操作。最后主進程才打印了remote進程傳的消息
舉報
快速掌握Android中進程間通信的開發和底層原理。
1 回答到底Stub中的那三個方法是在主進程還是子進程中呢?
1 回答AndroidStudio 主題
1 回答同一模塊下,涉及跨進程通信嗎?
1 回答假如 bindService返回 false ,messageServiceProxy 為null
1 回答這么好的課程怎么都沒人看啊,哎可惜了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-01-16
首先你這是兩個問題,之所以用arraylist不行,是因為arraylist只是簡單根據元素是否相等去增加刪除,所以由于序列化的問題前后已經不是一個對象了,那么自然刪不掉,而用RemoteCallbackList可以,是因為內部使用的Ibinder來唯一標識的,所以可以刪掉,而后續也是在此基礎上,remote進程調用了主進程的消息接收服務。而消息類也加了in關鍵字,所以對象進行了寫入的操作。最后主進程才打印了remote進程傳的消息