Ⅰ eventbus中registerSticky怎麼報錯說沒有定義是不是eventbus3.0版本太低最好有大神提供可用鏈接。
http://blog.sina.com.cn/s/blog_1595b076b0102wf2e.html
好久以前寫的,寫的不太好,湊合著看吧,打算換另一個博客了
我寫的功能是:
在MainActivity裡面注冊事件
點擊MainActivity的Button,進入Second
Second裡面還有一個Button,點擊後,發布事件
最後調用Toast
Ⅱ eventbusexception是什麼錯
你看EventBus注冊的時候是不是在主進程裡面,EventBus底層是handler,只能在主進程工作,否則就會報錯,注意是進程,不是線程,線程可以正常工作,看看有沒有用到aidl之類的..
Ⅲ eventbus為什麼我只post一次卻接受到很多次
方法/步驟 1,點擊啟動AndroidStudio,啟動後的界面如圖所示。 2,復制你需要添加的jar,並將其黏貼到app— —src— —main— —libs文件夾下,可運行的AndroidStudio項目都有像這樣的目錄結構。可以看到雖然jar已經復制黏貼過來了,但是還未導入,所。
Ⅳ Android中使用事件匯流排的優缺點分別是什麼
Android中使用事件匯流排Eventbus的優缺點如下:
1.Android EventBus事件匯流排是一個Android平台輕量級的事件匯流排框架, 它簡化了Activity、Fragment、Service等組件之間的交互,很大程度上降低了它們之間的耦合,使得代碼更加簡潔,耦合性更低,提升代碼質量。
2.AndroidEventBus使用註解來標識接收函數,這樣函數名不受限制。
3.缺點是要實現上述訂閱/發布模型的功能,付出的代價就是對各個注冊Bus的類進行反射。如果大量的使用的情況下,對應用的性能多少有點副影響。
AndroidEventBus類似於觀察者模式,通過register函數將需要訂閱事件的對象注冊到事件匯流排中,然後根據@Subcriber註解來查找對象中的訂閱方法,並且將這些訂閱方法和訂閱對象存儲在map中。當用戶在某個地方發布一個事件時,事件匯流排根據事件的參數類型和tag找到對應的訂閱者對象,最後執行訂閱者對象中的方法。這些訂閱方法會執行在用戶指定的線程模型中,比如mode=ThreadMode.ASYNC則表示該訂閱方法執行在子線程中
Ⅳ eventbus粘性時間和普通事件的區別
3與2主要區別在代碼使用簡化和性能更快上。詳細如下:EventBus 2.x 必須定義以onEvent開頭的幾個方法,代碼中語境比較突兀,且有可能會導致拼寫錯誤,例如數據同步事件
EventBus 3.0 函數名字不再受到許可權,而且可以在一個函數中體現出在哪個線程執行,並且可指定接收事件的優先順序
EventBus 2.x 注冊方式也比較繁瑣。EventBus 3.0 注冊方式只有一個
EventBus 2.x 是採用反射的方式對整個注冊的類的所有方法進行掃描來完成注冊,當然會有性能上的影響。EventBus 3.0中EventBus提供了EventBusAnnotationProcessor註解處理器來在編譯期通過讀取@Subscribe()註解並解析、處理其中所包含的信息,然後生成java類來保存所有訂閱者關於訂閱的信息,這樣就比在運行時使用反射來獲得這些訂閱者的信息速度要快
Ⅵ 如何消除間接呼叫 Method 在 Android Studio 中的編譯警告
如果有使用過 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一類的 Framework 像是 Otto 或 EventBus,一定會撰寫出 Method 是沒有被自己開發的源代碼直接呼叫的。這時在 Android Studio 的即時編譯檢查就會出現警告:
Method 『...』 is never used
就像這篇文章里提到,警告的出現會形成一定程度上的困擾,最好是能夠消除掉,畢竟這是一個無法避免的寫法,但又不應該被看成是個問題。
照「調整 Android Studio 編譯檢查規則」中的方法把檢查規則整個取消掉,是個一勞永逸的方法。但是也把其可能的錯誤也抑制掉了,徒增程序質量上的風險,並非上策。
另外一個可行的選項是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters」})。跟前一個方案一樣,應該顯示的警告也同時被遮蔽掉了,不是最佳的方式。
所幸 Android Studio 也不是沒有提供對策,在有問題的源代碼上按下「alt+enter」,會跳出 Menu 並可以選擇 Suppress for methods annotated by 『...』 項目。以 greenrobot 的 EventBus 為例,所有以 org.greenrobot.eventbus.Subscribe 為 Annotation 的 Method 都不會再顯示警告,所以問題順利地解決了。
以上的解決方法應該已經很多人都知道了,只是還有一個衍生的問題。如果使用的 Framework 提供的 Annotation 不只一個,還是得要一個一個地重覆相同的動作,不能一次搞定嗎?
這時可以開啟「調整 Android Studio 編譯檢查規則」中提到的 Inspections 選項畫面,切換到「Java->Declaration rendancy->Unused declaration」項目。畫面右方的 Options Frame 最下方有一個【Configure annotations...】的按鈕,點下去之後會再跳出另一個小視窗。接著就可以在視窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一個是新增單一個 Class,另一個則是使用萬用字元來增加一整組的 Class。
以上說明的這些資訊都被存在 .idea/misc.xml 的文件中,打開後會看到類似以下的內容:
<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的內容,也會達到一樣的效果。