为什么改造从ASP Web服务获取数据太慢

如何解决为什么改造从ASP Web服务获取数据太慢

我编写了一个android应用程序,但是它从服务器获取数据的速度太慢 我使用rxjava和改造来获取数据和Web服务已由asp.net编写 请告诉我该怎么办 我已经与邮递员检查过Web服务,它们很好而且很快 请查看我的代码,并告诉我它们有什么问题 这些是我的代码: 片段:

public class HomeFragment extends BaseFragment implements HomeContract.View {

    private HomeContract.Presenter presenter;
    private SliderView slider;
    private TextView txt_homeFragment_showAllNew,txt_homeFragment_showAllTopSelling,txt_homeFragment_showAllHits;
    private RecyclerView rv_homeFragment_newProduct,rv_homeFragment_topSelling,rv_homeFragment_hits,rv_homeFragment_specialOffer;
    private Button btn_homeFragment_showAllSpecial;
    private HomeRecyclerAdapter adapter;
    private Fragment fragment;
    private FragmentTransaction transaction;
    private Bundle bundle;
    @SuppressLint("StaticFieldLeak")
    private Dialog myDialog;

    @Override
    public void onViewCreated(@NonNull View view,@Nullable Bundle savedInstanceState) {
        super.onViewCreated(view,savedInstanceState);
        String pls = getResources().getString(R.string.please_wait);
        String loading = getResources().getString(R.string.loading);

    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        presenter = new HomePresenter(new TCommerceRepository(),getViewContext());
        if(MainFragment.checkInternet) {
            presenter.getNewProduct();
            presenter.getHitsProduct();
            presenter.getSlider();
        }


    }

    @Override
    public int getLayout() {
        return R.layout.fragment_home;
    }

    @Override
    public void setupViews() {
        myDialog = new Dialog(getContext());
        myDialog.setContentView(R.layout.dialog_alert);
        TextView txtTitle = myDialog.findViewById(R.id.txt_alertDialog_title);
        TextView txtMessage = myDialog.findViewById(R.id.txt_alertDialog_message);

        String pls = getResources().getString(R.string.please_wait);
        String loading = getResources().getString(R.string.loading);
        txtTitle.setText(loading);
        txtMessage.setText(pls);
        myDialog.getWindow().setLayout(1000,500);


        slider = rootView.findViewById(R.id.slider_homeFragment_slideShow);
        txt_homeFragment_showAllNew = rootView.findViewById(R.id.txt_homeFragment_showAllNew);
        txt_homeFragment_showAllTopSelling = rootView.findViewById(R.id.txt_homeFragment_showAllTopSelling);
        txt_homeFragment_showAllHits = rootView.findViewById(R.id.txt_homeFragment_showAllHits);
        rv_homeFragment_newProduct = rootView.findViewById(R.id.rv_homeFragment_newProduct);
        rv_homeFragment_topSelling = rootView.findViewById(R.id.rv_homeFragment_topSelling);
        rv_homeFragment_hits = rootView.findViewById(R.id.rv_homeFragment_hits);
        rv_homeFragment_specialOffer = rootView.findViewById(R.id.rv_homeFragment_specialOffer);
        btn_homeFragment_showAllSpecial = rootView.findViewById(R.id.btn_homeFragment_showAllSpecial);




        txt_homeFragment_showAllNew.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bundle  = new Bundle();
                bundle.putInt("flag",1);
                fragment = new StockListFragment();
                fragment.setArguments(bundle);
                transaction = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.frm_mainFragment_mainLayout,fragment);
                transaction.commit();
            }
        });

        txt_homeFragment_showAllTopSelling.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bundle = new Bundle();
                bundle.putInt("flag",2);
                fragment = new StockListFragment();
                fragment.setArguments(bundle);
                transaction = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.frm_mainFragment_mainLayout,fragment);
                transaction.commit();
            }
        });

        txt_homeFragment_showAllHits.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bundle = new Bundle();
                bundle.putInt("flag",3);
                fragment = new StockListFragment();
                fragment.setArguments(bundle);
                transaction = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.frm_mainFragment_mainLayout,fragment);
                transaction.commit();
            }
        });


    }

    @Override
    public Context getViewContext() {
        return getContext();
    }

    @Override
    public void showMessage(String msg) {
        Log.i("LOG::::",msg);
    }

    @Override
    public void onStart() {
        super.onStart();
        presenter.attachView(this);
    }

    @Override
    public void onStop() {
        super.onStop();
        presenter.detachView();
    }

    @Override
    public void showNewProduct(StockListModel list) {


        adapter = new HomeRecyclerAdapter(getViewContext(),list);
        rv_homeFragment_newProduct.setLayoutManager(new LinearLayoutManager(getViewContext(),RecyclerView.HORIZONTAL,false));
        rv_homeFragment_newProduct.setAdapter(adapter);
    }

    @Override
    public void showTopSellProduct(StockListModel list) {
        adapter = new HomeRecyclerAdapter(getViewContext(),list);
        rv_homeFragment_topSelling.setLayoutManager(new LinearLayoutManager(getViewContext(),false));
        rv_homeFragment_topSelling.setAdapter(adapter);

    }

    @Override
    public void showHitsProduct(StockListModel list) {

        adapter = new HomeRecyclerAdapter(getViewContext(),list);
        rv_homeFragment_hits.setLayoutManager(new LinearLayoutManager(getViewContext(),false));
        rv_homeFragment_hits.setAdapter(adapter);
        if (myDialog.isShowing()){
            myDialog.dismiss();
        }
    }

    @Override
    public void showSlider(ItemImageSlider itemImageSlider) {

        if ((myDialog.isShowing())){
            myDialog.dismiss();
        } else {
            myDialog.show();
        }

        TimerTask task = slider.getTimerTask();
        Timer timer = new Timer();
        timer.schedule(task,5000,2000);

        ArrayList<String> urls = new ArrayList<>();
        for (int i = 0; i < itemImageSlider.getItems().size(); i++) {
            urls.add(itemImageSlider.getItems().get(i).getIcon());
        }
        slider.setUrls(urls);



    }
}

演示者:

public class HomePresenter implements HomeContract.Presenter {

    private HomeContract.View view;
    private TCommerceDataSource tCommerceDataSource;
    private CompositeDisposable compositeDisposable = new CompositeDisposable();

    private Context context;

    HomePresenter (TCommerceDataSource tCommerceDataSource,Context context){

            this.tCommerceDataSource = tCommerceDataSource;
            this.context = context;

    }

    @Override
    public void attachView(HomeContract.View view) {
        this.view = view;
    }

    @Override
    public void detachView() {
        this.view = null;
        if (compositeDisposable != null){
            compositeDisposable.clear();
            
        }
    }

    @Override
    public void getNewProduct() {


            tCommerceDataSource.getListStockNew().subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new SingleObserver<StockListModel>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            compositeDisposable.add(d);
                        }

                        @Override
                        public void onSuccess(StockListModel productList) {
                            view.showNewProduct(productList);
                            view.showTopSellProduct(productList);

                        }

                        @Override
                        public void onError(Throwable e) {
                            view.showMessage(e.toString());

                        }
                    });



    }
    @Override
    public void getHitsProduct() {

            tCommerceDataSource.getListStockBestView().subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new SingleObserver<StockListModel>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            compositeDisposable.add(d);
                        }

                        @Override
                        public void onSuccess(StockListModel stockListModel) {
                            view.showHitsProduct(stockListModel);


                        }

                        @Override
                        public void onError(Throwable e) {
                            view.showMessage(e.toString());

                        }
                    });


    }

    @Override
    public void getSlider() {

            tCommerceDataSource.getSlideImage().subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new SingleObserver<ItemImageSlider>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            compositeDisposable.add(d);
                        }

                        @Override
                        public void onSuccess(ItemImageSlider itemImageSlider) {
                            view.showSlider(itemImageSlider);

                        }

                        @Override
                        public void onError(Throwable e) {
                            view.showMessage(e.toString());

                        }
                    });


    }
}

这些是我的Okhttp客户端和拦截器:

OkHttpClient httpClient = new OkHttpClient.Builder()
                .connectTimeout(6,TimeUnit.MINUTES)
                .readTimeout(6,TimeUnit.MINUTES)
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request request = chain.request()
                                .newBuilder()
                                .build();
                        return chain.proceed(request);
                    }
                }).build();
        
        return httpClient;

我应该如何使用拦截器? 我应该改变什么?

解决方法

示例用法(不是答案-仅用于调试)

   public class LoginInterceptor extends Interceptor {
        private static final String TAG = LoginInterceptor.class.getSimpleName() + " : ";
    
    
        @Override
        public Response intercept(Interceptor.Chain chain) throws IOException {
            Request request = chain.request();
    
            long t1 = System.nanoTime();
    
            Log.i(TAG,String.format("Sending request %s on %s%n%s",request.url(),chain.connection(),request.headers()));
    
    
            Response response = chain.proceed(request);
    
            long t2 = System.nanoTime();
    
    
            Log.d(TAG,String.format("Received response for %s in %.1fms%n%s",response.request().url(),(t2 - t1) / 1e6d,response.headers()));
    
            return response;
        }

并将其添加到客户端

.addNetworkInterceptor(new LoginInterceptor())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-