老師講的很好,要是實(shí)際的跨進(jìn)程案例講解就更好了,加深記憶
2023-05-01
最新回答 / sam寨
子進(jìn)程中,這個(gè)可以類比網(wǎng)絡(luò)請(qǐng)求來理解客戶端發(fā)送請(qǐng)求給服務(wù)器,服務(wù)器和客戶端物理上就不是同一個(gè)機(jī)器,所以顯然是在兩個(gè)進(jìn)程中,而客戶端在主線程發(fā)送請(qǐng)求當(dāng)然會(huì)阻塞,除非請(qǐng)求的時(shí)候是在子線程中進(jìn)行
2021-01-19
最新回答 / 慕絲4348654
確實(shí)是同一個(gè)模塊,但是在在不同的process,一個(gè)在mainactivity 的默認(rèn)包進(jìn)程,一個(gè)在:remote進(jìn)程,所以也是實(shí)現(xiàn)了跨進(jìn)程的。
2020-10-26
這節(jié)課最后老師說,Messenger不適合高并發(fā),高并發(fā)的時(shí)候可能會(huì)導(dǎo)致主線程的阻塞,這個(gè)說法成立的前提是,你創(chuàng)建Messenger時(shí)使用的是主線程的Handler,但事實(shí)上,Mesenger并沒有對(duì)Handler做限制,因此我們可以創(chuàng)建自己的HandlerThread和Handler,在指定的線程中去做跨進(jìn)程通信。而且個(gè)人覺得這種封裝糖其實(shí)挺好的,省去了我們手動(dòng)將Binder線程中操作轉(zhuǎn)換到其他線程,比如主線程的操作。
當(dāng)然一般的使用場(chǎng)景是,跨進(jìn)程通信得到的結(jié)果或者數(shù)據(jù)最終是要在主線程中使用的。
當(dāng)然一般的使用場(chǎng)景是,跨進(jìn)程通信得到的結(jié)果或者數(shù)據(jù)最終是要在主線程中使用的。
2020-07-07
最新回答 / 絕塵釋愛
創(chuàng)建一個(gè)共享內(nèi)存,發(fā)送的時(shí)候把數(shù)據(jù)存到共享內(nèi)存中,接收的時(shí)候讀取共享內(nèi)存中的數(shù)據(jù)
2020-07-05
最新回答 / weixin_慕用2546013
首先你這是兩個(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)程傳的消息
2020-04-08