Giter Site home page Giter Site logo

Comments (7)

gaochunchun avatar gaochunchun commented on May 7, 2024 2

感谢回复! 其实我的意思是比如在一个页面(Activity)中,需要有多个请求,而共用的是一个Callback(如:CommonCallBack),为了将返回的( T data) 数据类型做区分,我这边是在请求时给了一个int标志,然后在CallBack中进行switch,兄台觉得这样如何?因为以前自己封装的框架中,在请求时便传递了一个int的标志过去,然后在CallBack中返回过来便于判断....

from okhttp-okgo.

jeasonlzy avatar jeasonlzy commented on May 7, 2024

不同的请求一般是对应不同的 callback,因为callback内部是业务逻辑,不可能多个不同的请求,使用同样的业务逻辑哈。。

from okhttp-okgo.

bluejww avatar bluejww commented on May 7, 2024

确实存在一个activity中有多个请求的情况,我们现在的框架也是用Int型标志做的区分。

from okhttp-okgo.

memorise avatar memorise commented on May 7, 2024

可以继承现有的Callback自定义有请求标识的Callback,然后新建一个带int的回调监听接口重新实现就好了,我是这么做的

from okhttp-okgo.

jeasonlzy avatar jeasonlzy commented on May 7, 2024

如果同一个页面,使用同一个接口,返回的数据类型不一样,那么这个接口传递的参数一定是不一样的,那么针对不一样的参数类型,传递不一样的泛型,写不同的callback就可以了,没必要在回调中加标示位判断。如果返回的数据类型都不一样,为什么还要公用一个callback呢。我示例代码写了个基类的callback是因为我为了演示方便,无论什么接口,都只做数据展示的逻辑,没有特别的其他逻辑。。。

from okhttp-okgo.

gaochunchun avatar gaochunchun commented on May 7, 2024

谢谢,您的意思是根据(返回数据类型)和(传递的参数类型)不同去写不同的callback,这样完全可以,我个人是觉得既然可以通过一个标记去判断返回的数据类型,就不想写那么多CallBack了。比如一个页面中多个请求,分别需要传递实体A,实体B,实体C,List<实体> 根据您上面说的,可以写多个Callback在这个页面中,但它们最终的目的都是请求并解析完成数据,无非是返回的数据类型不同,所以我这边就根据一个请求标记在CallBack中做区分,少写了一些callback,不过特殊逻辑还是得单独定义CallBack。我想的是把那个请求id在发起请求时传过去,在onResponse中返回,多添加一个标记参数,目前暂时这样写,大神莫见笑。。。。

@OverRide
public void onClick(View v) {
switch (v.getId()) {
case R.id.get:
AppConstant.mRequestId = 0;

        HttpRequestManager.getInstance().test(this,new CustomCallBack<>(this, TestInfo.class)); //请求1   实体:TestInfo.class
        break;

    case R.id.post:
        AppConstant.mRequestId = 1;
        HttpRequestManager.getInstance().login(this,"[email protected]","123456",new CustomCallBack<>(this, LoginInfo.class));//请求2   实体:LoginInfo.class
        break;

    case R.id.post2:
        AppConstant.mRequestId = 2;
        Type type = new TypeReference<List<RelicInfo>>(){}.getType();   //FastJson---指定集合Type
        HttpRequestManager.getInstance().test2(this,"4",new CustomCallBack<List<RelicInfo>>(this,type)); //请求3    集合:List<RelicInfo>

        break;
    }
}

--------------------------------------------------------------------------------------------------------- CallBack
@OverRide
public void onResponse(boolean isFromCache, T data, Request request, Response response) {

        Log.i("gao_chun", "是否来自缓存------------"+isFromCache);

        switch (AppConstant.mRequestId) {
        case 0:

            TestInfo info = (TestInfo)data;  //解析完成的实体数据
            mTv.setText(info.toString());
            break;

        case 1:
            LoginInfo mInfo = (LoginInfo) data;   //解析完成的实体数据
            mTv.setText(mInfo.toString());
            break;

        case 2:
            List<RelicInfo> aInfos= (List<RelicInfo>)data;   //解析完成的集合数据
            mTv.setText(aInfos.toString());
            break;
        default:
            break;
        }
    }

from okhttp-okgo.

jeasonlzy avatar jeasonlzy commented on May 7, 2024

好吧。。个人习惯而已。。能达到效果就可以。。

from okhttp-okgo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.