eventbus里面的递归函数

时间:2017-02-22 07:28:26

标签: android event-bus

我在一个递归函数中使用EventBus发布事件,该函数从web服务中获取分页数据。

public void getCallsData(final UserRequest userRequest){

        serviceCall.enqueue(new Callback<UserResponseInfo>() {
            @Override
            public void onResponse(Call<UserResponseInfo> call, Response<UserResponseInfo> response) {

                if(response.isSuccessful()) {

                    UserResponseInfo userResponseInfo = response.body();

                    if (userResponseInfo != null) {
                        try {
                            Log.e(TAG, "getCallsData response " + LoganSquare.serialize(userResponseInfo));
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                        int currentPage =  userRequest.getUserRequestInfo().get(0).getPage();
                        int totalPages = userResponseInfo.getTotalPages();

                        if(currentPage < totalPages){

                            userRequest.getUserRequestInfo().get(0).setPage(++currentPage);
                            Log.e(TAG, "getCallsData fetching next page "+currentPage);
                            userResponseInfo.setCurrentPage(currentPage);
                            userResponseInfo.setRequestType(GET_CALL_REQUEST);
                            EventBus.getDefault().postSticky(userResponseInfo);
                            getCallsData(userRequest);


                        }

                    } else {

                    }
                }else{

                }
            }

            @Override
            public void onFailure(Call<UserResponseInfo> call, Throwable t) {

            }
        });
    }

问题是EventBus.getDefault().postSticky(userResponseInfo);getCall以递归方式执行时,它没有正确发布事件,因为只有第一个事件被调用并且它错过了最后一个事件。

0 个答案:

没有答案