suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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 Tage vor685

Antworte allen(6)Ich werde antworten

  • PHP中文网

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

    异步请求不应该这样写返回的,应该用回调。
    写个接口,在onSuccess里面调用接口方法,然后使用的时候回调就可以

    Antwort
    0
  • 伊谢尔伦

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

    建议你先学习一下回调这个知识点链接描述

    Antwort
    0
  • PHPz

    PHPz2017-04-17 17:33:24

    如楼上所说,异步任务用接口实现,在调用接口方法时最好处理下线程问题。

    Antwort
    0
  • 伊谢尔伦

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

    rxjava是个不错的选择

    Antwort
    0
  • 高洛峰

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

    不明白你为什么要重新包装一遍,其实Bmob都封装好了的,你有需要的话,就写一个接口回调

    public getListListener gll;
    //接口
    public interface getListListener{
        void onSucceed(List<data>);
    }
    
    public void load(final getListListener gll){
        
        this.gll=gll;
        ...
        ...
        Bmob.find(new findListener(){
        
            void onSucceed(List<data> data){
                //回调方法
                gll.onsucceed(data);
            }
            ...
        });
    }
    
    //使用:
    load(new getListListener(){
        void onSuccees(list<data> data){
            //得到数据
            //写你自己的逻辑.
        }
    });
    

    经过上面。。。你会发现并没有什么用。。。所以说接口使用Bmob回调接口就好了!不用多此一举!!

    Antwort
    0
  • 高洛峰

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

    1、在异步线程中,进行耗时操作
    2、查询结束后,可以用EventBus或者RxBus发送消息到主线程
    3、主线程接受event,然后进行刷新
    或者
    用楼上提到过的RxJava

    Antwort
    0
  • StornierenAntwort