android - 请求数据异步耗时操作如何返回?
巴扎黑
巴扎黑 2017-04-17 17:31:24
0
6
688
public List<QiangYu> load() {
    BmobQuery<QiangYu> query = new BmobQuery<QiangYu>();

    query.findObjects(UiUtils.getContext(), new FindListener<QiangYu>() {

        @Override
        public void onSuccess(List<QiangYu> list) {
            //这个list是不为空的.我想问的是如何把这个list数据在load方法中返回出去.
            //因为耗时.这样直接返回是null.
            
            } 
        }

        @Override
        public void onError(int arg0, String arg1) {
        };
    });

    //因为onSuccess耗时.这样写,会直接返回null
    //有什么办法,可以让onSuccess完成,获取好数据在返回???
    return list;
}
巴扎黑
巴扎黑

모든 응답(6)
洪涛

비동기 요청은 이와 같이 반환되어서는 안 되며 콜백을 사용해야 합니다.
인터페이스를 작성하고 onSuccess에서 인터페이스 메소드를 호출한 후 사용할 때 다시 콜백하세요

伊谢尔伦

콜백과 링크 설명에 대해 먼저 알아보는 것이 좋습니다

PHPzhong

위에서 언급했듯이 비동기 작업은 인터페이스를 사용하여 구현되며 인터페이스 메서드를 호출할 때 스레드 문제를 처리하는 것이 가장 좋습니다.

伊谢尔伦

rxjava가 좋은 선택입니다

小葫芦

왜 다시 패키징해야 하는지 모르겠습니다. 사실 Bmob은 이미 패키징되어 있으므로 필요하다면 인터페이스 콜백을 작성하면 됩니다. 으아악 위를 통과하세요. . . 아무 소용이 없다는 것을 알게 될 것입니다. . . 따라서 인터페이스에는 Bmob 콜백 인터페이스를 사용하십시오! 불필요한 일은 하지 않아도 됩니다! !

小葫芦

1. 시간이 많이 걸리는 작업을 비동기 스레드에서 수행
2. 쿼리가 완료된 후 EventBus 또는 RxBus를 사용하여 메인 스레드에 메시지를 보낼 수 있습니다
3. 그런 다음 새로 고치거나
위에서 언급한 RxJava를 사용하세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿