首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RoboSpice并行执行

用RoboSpice并行执行
EN

Stack Overflow用户
提问于 2014-03-01 17:29:20
回答 1查看 594关注 0票数 1

通过RoboSpice异步执行一组请求的最简单方法是什么?

我在某个地方读到需要实现RequestRunner,但我不知道如何将它与SpiceManager合并,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-06 15:58:20

您可以覆盖可用线程的num,定义您自己的自定义SpiceService:

代码语言:javascript
复制
    public class CustomSpiceService extends RetrofitGsonSpiceService {
      /**
      * Overrides the number of threads that will be used to make requests.  The default
      * is 1.
      */
      @Override
      public int getThreadCount(){
        return NUM_THREAD;
      }
    } 

之后,您可以在您的经理中使用您的新spiceService:

代码语言:javascript
复制
    private SpiceManager spiceManager = new SpiceManager(CustomSpiceService.class);

更重要的是,您可以检测到连接的类型,这样如果您处于Wifi连接中,就可以有更多的线程。

代码语言:javascript
复制
/**
 * Overrides the number of threads that will be used to make requests.  The default
 * is 1, so if we are on a fast connection we use 4, otherwise we use 2.
 */
@Override
public int getThreadCount() {

    ConnectivityManager connectivityManager = 
            (ConnectivityManager) DaftApp.getInstance().getSystemService(CONNECTIVITY_SERVICE);

    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
   if(info==null){
       return 2; // there is no network available now. Anyway we use the default num of thread
   }
    switch (info.getType()) {
        case ConnectivityManager.TYPE_WIFI:
        case ConnectivityManager.TYPE_WIMAX:
        case ConnectivityManager.TYPE_ETHERNET:
            return 4;
        case ConnectivityManager.TYPE_MOBILE:
            return 2;
        default:
            return 2;
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22117740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档