検索

ホームページ  >  に質問  >  本文

android - 请求数据异步耗时操作如何返回?

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;
}
巴扎黑巴扎黑2772日前681

全員に返信(6)返信します

  • PHP中文网

    PHP中文网2017-04-17 17:33:24

    非同期リクエストはこのように返されるべきではなく、コールバックを使用する必要があります。
    インターフェイスを作成し、onSuccess でインターフェイス メソッドを呼び出し、使用時にコールバックします

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:33:24

    最初にコールバックとリンクの説明について学ぶことをお勧めします

    返事
    0
  • PHPz

    PHPz2017-04-17 17:33:24

    上で述べたように、非同期タスクはインターフェイスを使用して実装されるため、インターフェイス メソッドを呼び出すときにスレッドの問題に対処するのが最善です。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:33:24

    rxjava は良い選択です

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:33:24

    なぜ再パッケージ化する必要があるのか​​わかりません。実際、Bmob はすでにパッケージ化されています。必要な場合は、インターフェイス コールバック

    を記述するだけです。 リーリー

    上を通過します。 。 。それは役に立たないことがわかるでしょう。 。 。したがって、インターフェイスには Bmob コールバック インターフェイスを使用するだけです。余計なことをする必要はありません! !

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:33:24

    1. 時間のかかる操作を非同期スレッドで実行します
    2. クエリが完了したら、EventBus または RxBus を使用してメイン スレッドにメッセージを送信できます
    3. メイン スレッドはイベントを受け取り、その後、更新します
    または
    上記の RxJava を使用します

    返事
    0
  • キャンセル返事