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;
}
PHP中文网2017-04-17 17:33:24
非同期リクエストはこのように返されるべきではなく、コールバックを使用する必要があります。
インターフェイスを作成し、onSuccess でインターフェイス メソッドを呼び出し、使用時にコールバックします
PHPz2017-04-17 17:33:24
上で述べたように、非同期タスクはインターフェイスを使用して実装されるため、インターフェイス メソッドを呼び出すときにスレッドの問題に対処するのが最善です。
高洛峰2017-04-17 17:33:24
なぜ再パッケージ化する必要があるのかわかりません。実際、Bmob はすでにパッケージ化されています。必要な場合は、インターフェイス コールバック
を記述するだけです。 リーリー上を通過します。 。 。それは役に立たないことがわかるでしょう。 。 。したがって、インターフェイスには Bmob コールバック インターフェイスを使用するだけです。余計なことをする必要はありません! !
高洛峰2017-04-17 17:33:24
1. 時間のかかる操作を非同期スレッドで実行します
2. クエリが完了したら、EventBus または RxBus を使用してメイン スレッドにメッセージを送信できます
3. メイン スレッドはイベントを受け取り、その後、更新します
または
上記の RxJava を使用します