我應該爲單個活動巴士發佈多少活動?例如 -通過活動巴士發佈對象
註冊事件總線 - EventBus.getDefault()。register(this);
Posting Event - EventBus.getDefault()。post(Object);
而且是沒有任何問題的原因,如果我不能註銷EventBus
我應該爲單個活動巴士發佈多少活動?例如 -通過活動巴士發佈對象
註冊事件總線 - EventBus.getDefault()。register(this);
Posting Event - EventBus.getDefault()。post(Object);
而且是沒有任何問題的原因,如果我不能註銷EventBus
EventBus中的事件數量沒有限制。
如果您註冊到EventBus的對象的生命週期比EventBus的生命週期短(通常與應用程序生存期相同),您肯定需要從EventBus註銷。如果你不這樣做,註冊對象將始終在EventBus中引用它,這將阻止垃圾回收器完成其工作。
假設您有一個訂閱事件的文件查看器活動。您可以打開一個文件,查看它,關閉活動並打開另一個使用相同活動的文件。現在,如果您不取消訂閱EventBus,則用戶打開的所有活動都將在EventBus內引用它們。他們永遠不會被垃圾收集,所以最終應用程序將耗盡內存。
您可以發佈你想要的事件一樣多。如果你不打電話取消註冊,事件將在你關閉的活動中進行。例如,你將有內存泄漏,因爲EventBus將包含你關閉活動的引用。此外,這可以產生exaption,例如,您將對視圖進行一些整合,在關閉活動時,在EventBus訂閱方法中會變爲null。
是否有任何問題,如果我註冊EventBus多次像註冊EventBus在2個不同的活動? – sanil
@sanil你的意思是同時註冊多個實例?沒有。雖然多次註冊相同的實例會引發異常。 – Zharf
我的意思是 - 在FirstActivity.java - EventBus.getDefault()。register(this); – sanil