๊ณ ์ ์ด๋ฒคํธ๋ก ์์
ํ ๋ ์ด๋ฒคํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ ํ ๊ฒ์ ์์์ต๋๋ค. ์ด๋ฒคํธ ๋ฑ๋ก๊ณผ ๊ฒ์๊ฐ ๋์์ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ดํด๋ณด์์ต๋๋ค. postSticky ๋ฉ์๋์์ ๋๋stickyEvents๋ฅผ ๋ฃ์ ํ ์ฆ์stickyEvents ๊ฐ์ฒด์ ๋ํ ์ ๊ธ์ด ํด์ ๋๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฒคํธ๊ฐ ํ์ฌ ๋ฆฌ์ค๋์ ๊ฒ์๋ฉ๋๋ค.
๋ฑ๋ก์ ์ํด ๋ฆฌ์ค๋๋ ๋จผ์ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋๋ก ๋ฑ๋ก๋ ํ ๊ณ ์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋ํฉ๋๋ค. ์คํฐํค ์ด๋ฒคํธ๋ฅผ ๋ฐ์ผ๋ฉด ์ด๋ฅผ ๋ฐ์ต๋๋ค. ์ด๊ฒ์ ๋ฆฌ์ค๋๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ ๋ฒ ๋ฐ์ ์ ์์์ ์๋ฏธํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ จ๋์?
ํตํฝ์ค๋ฅผ ์ฌ์ฉํ์ต๋๋ค. EventBus ํด๋์ค์์ registerSticky(Object), registerSticky(Object, int), postSticky(Object) ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ก๋ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ์ค๋ช ํ ๊ฒฝ์ ์กฐ๊ฑด์ ํผํ๊ธฐ ์ํด ๋๊ธฐํํ์ต๋๋ค. ๋น ๋ฅธ ์์ ์ด์๊ณ ๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ํจ์น๋ฅผ ๋ณด๋ด์ง ์์์ต๋๋ค.
public class EventBusWithStickyFix extends EventBus {
<strong i="8">@Override</strong>
public synchronized void registerSticky(Object subscriber) {
super.registerSticky(subscriber);
}
<strong i="9">@Override</strong>
public synchronized void registerSticky(Object subscriber, int priority) {
super.registerSticky(subscriber, priority);
}
<strong i="10">@Override</strong>
public synchronized void postSticky(Object event) {
super.postSticky(event);
}
}
removeStickyEvent๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
EventBus.getDefault().removeStickyEvent(NotifyToJoinEvent.class);
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
removeStickyEvent๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
EventBus.getDefault().removeStickyEvent(NotifyToJoinEvent.class);