2014-10-28 43 views
5

我在我的應用程序中使用EventBus開始,它真的很好用,它解決了很多的問題,並簡化代碼,以及傳播與各地的所有線程的應用程序,一切都太棒了,但我覺得我可能濫用事件的使用。EventBus使用,存儲和建築

現在一切都很好,我現在在強大的設備測試和應用程序的響應是非常好的,但是我有很多的編碼做又和我開始懷疑自己將如何影響有太多的事件觸發所有的應用程序。

所以現在的問題是任何人都具有與該庫的經驗,如果有一些問題,有很多事件在我的應用程序,如果有涉及到使用該事件的一些已知的內存問題。我試圖明智地使用它,但很難在您的架構中不包含它,因爲它是一個非常好的功能。無論如何,如果你有話要說這個問題會很好,因爲我有很多編碼要做,並且會是一個問題,我的體系結構是錯誤的,必須回去做出更改,因爲一些問題與事件有關。

PD。我說的是原生的Android應用程序,有很多網絡

THX的

+2

我的意見,我個人認爲我濫用事件更容易比我做的'監聽observer'模式,(或者,在iOS上,委託方式),即使它們是非常相似的。事件在架構上沒有固有的錯誤,但是你必須小心。如果你一開始就這樣認爲,那麼這是有原因的。我會嘗試堅持「偵聽器觀察者」,除非通過使用事件來實現某些事情的唯一方法。只是重申,這只是我的看法。 – Adam 2014-10-28 17:19:24

+0

是的,我的擔心是,它可能變得棘手和難以維護和擴展,現在我使用排球庫爲我的網絡和我處理所有我的回調與事件,我也使用事件也關鍵錯誤/在我的應用程序中需要停止執行並需要在整個應用程序中傳播的問題,例如在Web服務調用之前請求互聯網連接,並且如果不在當前可見活動/片段或Toast中顯示對話屏幕,但我發現自己傾向於越來越多地使用它,這就是爲什麼我要求 – labreu 2014-10-28 17:30:40

回答

4

只要您遵循組件生命週期更改,在您的應用中有很多事件就不成問題:在onStart()中註冊事件並在onStop()註銷事件。如果您這樣做,那麼只有相對較小的活動組件子集纔會訂閱事件,這使整個解決方案變得非常精簡。

在我的應用程序中,我遇到了中央單件事件總線實例的一些問題,這就是爲什麼我使用能夠附加到活動並尊重它的生命週期的lightweight and fast event bus。有了它,我可以爲每個活動提供一個總線實例,這非常輕便。只有

+0

是的,我正在處理註冊/取消註冊事件,在我的項目中,我正在使用的EventBus庫很好地處理該部分,查看您的庫和示例,它看起來不錯。在greenrobot的EventBus庫中,事件處理函數singleton由庫提供,所以你只需要註冊就可以了。感謝您的迴應 – labreu 2014-11-17 17:26:42

2

我明白你說什麼,我也努力在我們公司一個相當龐大的代碼庫,我們使用事件總線很多。你只需要小心,但它可以討厭找出應用程序中的哪些地方訂閱了某個事件。如果有多個訂閱,那麼不得不瀏覽應用程序並不是很有趣。作爲一個解決方案,我喜歡使用這個驚人的Android Studio插件Otto Event Bus,它可以無縫地將您從事件中發送給用戶,反之亦然。

https://github.com/square/otto-intellij-plugin

這將真正幫助使事件與用戶輕鬆很多之間的導航。

+0

是的,它看起來像一個不錯的工具,但我沒有使用Otto,而是使用綠色機器人EventBus庫:https://github.com/greenrobot/EventBus。我正在處理大量的調用和回調,試圖儘可能多地組織一個大項目,現在看起來不錯,讓我們看看維護和可伸縮性如何看起來像時間。 Thx的迴應,不要接受它作爲正確的因爲它只用於奧托,但是對其他人來說是一個很好的工具,所以你得到了我的最後一票。 – labreu 2014-11-10 16:29:04