1. 程式人生 > >fragment複用至EventBus多次呼叫

fragment複用至EventBus多次呼叫

專案是mvp模式開發的,中間有一個tablayout,每個標籤都是fragment複用,通過model請求不同資料展示,發現一個問題,多次滑動之後,每個fragment最後都顯示同一個內容,看起來好像fragment複用有問題,每次取得是同一個fragment。debug之後發現請求沒問題,確實是請求的不同資料。
一開始覺得是複用單例寫的有問題,怎麼改都不行。後來發現是EventBus的問題。

 /**
     * 事件響應方法
     * 接收訊息
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public
void onEvent(AdapterEvent event) { //...... }

eventbus是通過不同的自定義Event類去接受訊息的,而因為fragment是複用的,所以在每個fragment裡都註冊了訊息接受EventBus.getDefault().register(this);所以每個fragment單例都會收到訂閱的訊息,最後的結果就是,每個fragment都會被重新整理。
問題發現了就好處理了,加個標籤標識不同fragment就行

 /**
     * 事件響應方法
     * 接收訊息
     *
     * @param event
     */
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(AdapterEvent event) { if (event.getWhich() == which) { //...... } }