Android 为什么改型从asp web服务获取数据太慢

Android 为什么改型从asp web服务获取数据太慢,android,retrofit,rx-java,mvp,android-mvp,Android,Retrofit,Rx Java,Mvp,Android Mvp,我已经编写了一个android应用程序,但它从服务器获取数据的速度太慢 我使用rxjava和改进来获取数据,web服务是由asp.net编写的 请告诉我该怎么办 我已经和邮递员检查过网络服务,它们很好而且很快 请检查我的代码并告诉我有什么问题 这是我的密码: 片段: public class HomeFragment extends BaseFragment implements HomeContract.View { private HomeContract.Presenter pr

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

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() , RecyclerView.HORIZONTAL , false));
        rv_homeFragment_topSelling.setAdapter(adapter);

    }

    @Override
    public void showHitsProduct(StockListModel list) {

        adapter = new HomeRecyclerAdapter(getViewContext() , list);
        rv_homeFragment_hits.setLayoutManager(new LinearLayoutManager(getViewContext() , RecyclerView.HORIZONTAL , 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);



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

一个如何使用的示例(不是答案-只是为了调试)

并将其添加到客户端

.addNetworkInterceptor(新的LoginInterceptor())


为什么不使用拦截器来查看响应时间和其他信息?我已经使用了拦截器。如何查看响应时间和其他信息?是否存在应用程序问题或服务器问题?:2020-08-16 17:24:48.153 15571-15654/com.intechdev.tcommerce D/Inter:in 24216.3ms缓存控制:无缓存Pragma:no Cache,no Cache Content Type:application/json;charset=utf-8内容编码:gzip过期:-1服务器:Microsoft IIS/8.5 X-AspNet-Version:4.0.30319 Set Cookie:ASP.NET_SessionId=yy2xlvydmh4dyramwv1z053f;路径=/;HttpOnly;SameSite=Lax Access Control Allow Origin:*请删除上面注释中的api,如果它很重要的话,现在对于查询来说,响应输出是非常大的json,但不应该像上面提到的那样需要24216.3ms。在Windows的Postman客户端应用程序中测试api。我已经在Postman中测试过了。但是响应是如此之快。当用不同的设备或模拟器进行测试时,你是否得到了相同的结果,在不同的设备上也是一样的
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());

                        }
                    });


    }
}
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;
        }