添加的消息監(jiān)聽經(jīng)過反序列化后為啥還會(huì)回調(diào)到主進(jìn)程
在刪除監(jiān)聽的時(shí)候刪除不了,是因?yàn)樵诳邕M(jìn)程的時(shí)候?qū)ο蟊恢匦路葱蛄谢?。但是在添加監(jiān)聽的時(shí)候也會(huì)反序列化,會(huì)重新生成一個(gè)對(duì)象,為什么還會(huì)回調(diào)到主進(jìn)程呢?求解答
在刪除監(jiān)聽的時(shí)候刪除不了,是因?yàn)樵诳邕M(jìn)程的時(shí)候?qū)ο蟊恢匦路葱蛄谢?。但是在添加監(jiān)聽的時(shí)候也會(huì)反序列化,會(huì)重新生成一個(gè)對(duì)象,為什么還會(huì)回調(diào)到主進(jìn)程呢?求解答
2020-04-08
舉報(bào)
2022-01-16
首先你這是兩個(gè)問題,之所以用arraylist不行,是因?yàn)閍rraylist只是簡(jiǎn)單根據(jù)元素是否相等去增加刪除,所以由于序列化的問題前后已經(jīng)不是一個(gè)對(duì)象了,那么自然刪不掉,而用RemoteCallbackList可以,是因?yàn)閮?nèi)部使用的Ibinder來唯一標(biāo)識(shí)的,所以可以刪掉,而后續(xù)也是在此基礎(chǔ)上,remote進(jìn)程調(diào)用了主進(jìn)程的消息接收服務(wù)。而消息類也加了in關(guān)鍵字,所以對(duì)象進(jìn)行了寫入的操作。最后主進(jìn)程才打印了remote進(jìn)程傳的消息