2 回答

TA貢獻1804條經驗 獲得超3個贊
不可以用于多進程。EventBus貌似就是訂閱者模式,而在多進程中,對象是不一致的,需要通過binder才能進行多進程通信,在這方面EventBus不支持,自然就不支持多進程了。

TA貢獻1779條經驗 獲得超6個贊
前面說了,Subscriber函數的名字只能是那4個,因為每個事件訂閱函數都是和一個`ThreadMode`相關聯的,ThreadMode指定了會調用的函數。有以下四個ThreadMode:
PostThread:事件的處理在和事件的發送在相同的進程,所以事件處理時間不應太長,不然影響事件的發送線程,而這個線程可能是UI線程。對應的函數名是onEvent。
MainThread: 事件的處理會在UI線程中執行。事件處理時間不能太長,這個不用說的,長了會ANR的,對應的函數名是onEventMainThread。
BackgroundThread:事件的處理會在一個后臺線程中執行,對應的函數名是onEventBackgroundThread,雖然名字是BackgroundThread,事件處理是在后臺線程,但事件處理時間還是不應該太長,因為如果發送事件的線程是后臺線程,會直接執行事件,如果當前線程是UI線程,事件會被加到一個隊列中,由一個線程依次處理這些事件,如果某個事件處理時間太長,會阻塞后面的事件的派發或處理。
Async:事件處理會在單獨的線程中執行,主要用于在后臺線程中執行耗時操作,每個事件會開啟一個線程(有線程池),但最好限制線程的數目。
- 2 回答
- 0 關注
- 4211 瀏覽
添加回答
舉報