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;
}
비동기 요청은 이와 같이 반환되어서는 안 되며 콜백을 사용해야 합니다.
인터페이스를 작성하고 onSuccess에서 인터페이스 메소드를 호출한 후 사용할 때 다시 콜백하세요
콜백과 링크 설명에 대해 먼저 알아보는 것이 좋습니다
위에서 언급했듯이 비동기 작업은 인터페이스를 사용하여 구현되며 인터페이스 메서드를 호출할 때 스레드 문제를 처리하는 것이 가장 좋습니다.
rxjava가 좋은 선택입니다
왜 다시 패키징해야 하는지 모르겠습니다. 사실 Bmob은 이미 패키징되어 있으므로 필요하다면 인터페이스 콜백을 작성하면 됩니다. 으아악 위를 통과하세요. . . 아무 소용이 없다는 것을 알게 될 것입니다. . . 따라서 인터페이스에는 Bmob 콜백 인터페이스를 사용하십시오! 불필요한 일은 하지 않아도 됩니다! !
1. 시간이 많이 걸리는 작업을 비동기 스레드에서 수행
2. 쿼리가 완료된 후 EventBus 또는 RxBus를 사용하여 메인 스레드에 메시지를 보낼 수 있습니다
3. 그런 다음 새로 고치거나
위에서 언급한 RxJava를 사용하세요