Проблема с оптимизацией приложения

приложение на Java с использованием Firebase,RecyclerView проблема заключается в том что приложение используем слишком много оперативной памяти(500-550мб). Скрин из профайлера введите сюда описание изображения

думаю проблема в этом фрагменте

    public class HomeFragment extends Fragment {
    private DatabaseReference proverka;
    private DatabaseReference otzyvRef;
    private DatabaseReference prover;
private int testintTwo;
    private TextView textesti;
    private Double itog;
    private Double itogt;
    private Double otztvValues;
    private Double otztvValuestwo;
    private DatabaseReference otzest;
    private int testint;

    private String saveCurrentDate, saveCurrentTime, ProductRandomKey;
    private DatabaseReference getmyNameRef;
    private FirebaseAuth mAuth;
    private RecyclerView HorizontalRec;
    private FirebaseRecyclerAdapter<ShopAdapter, VerticalShopHolder> VerticalAdapter;
    private FirebaseRecyclerAdapter<ShopAdapter, HorizontalShopHolder> horizAdapter;
    private DatabaseReference shops;
    private RecyclerView recAptek;
    private DatabaseReference shopipht;
    private ValueEventListener refTwoRaw;
    private Dialog dialog;
    private final HashMap<Query, ValueEventListener> listenersTwo = new HashMap<>();
    private final HashMap<Query, ValueEventListener> listeners = new HashMap<>();


    public HomeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
        otzyvRef = reference.child("otzyv");
        getmyNameRef = reference.child("client");
        proverka = reference.child("oformzakaz");

        dialog = new Dialog(getContext());
        shops = reference.child("shops");

        otzest = reference.child("otzyv");
        recAptek = view.findViewById(R.id.recAptek);
        prover = reference.child("otzyv");
        recAptek.setLayoutManager(new LinearLayoutManager(this.getContext()));
        textesti = view.findViewById(R.id.textesti);

        mAuth = FirebaseAuth.getInstance();
        String uid = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();
        shopipht = reference.child("DoCart");

        HorizontalRec= view.findViewById(R.id.rectwohome);
        HorizontalRec.setHasFixedSize(true);
        HorizontalRec.setLayoutManager(
                new LinearLayoutManager(this.getContext(),
                        LinearLayoutManager.HORIZONTAL,
                        false));

        ValueEventListener mRefUserListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists() && snapshot.getChildrenCount() > 0) {
                    for (DataSnapshot ds : snapshot.getChildren()) {

                        ShopAdapter shopAdapter = ds.getValue(ShopAdapter.class);
                        assert shopAdapter != null;

                        Log.d("jipe", shopAdapter.getProductId());

                        dialog.setContentView(R.layout.layot_otzyvov);
                        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                        AppCompatButton appCompatButton = dialog.findViewById(R.id.button_otzyv_otprav);
                        RatingBar ratingBar = dialog.findViewById(R.id.ratingBarotzyvdia);
                        TextView texrstyle = dialog.findViewById(R.id.textstatusOtzyv);
                        TextView zavershitzakaz = dialog.findViewById(R.id.zavershitzakaz);
                        EditText opisanieotzyv = dialog.findViewById(R.id.opisanieotzyv);
                        TextView textViewzaverh = dialog.findViewById(R.id.textViewzaverh);

                        textViewzaverh.setHint(shopAdapter.getShopId());
                        zavershitzakaz.setHint(shopAdapter.getProductId());

                        refTwoRaw = new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot snapshot) {
                                if (snapshot.exists() && snapshot.getChildrenCount() > 0) {
                                    textViewzaverh.setText(shopAdapter.getZaverName() +
                                            " завершил заказ. "
                                            + snapshot.child("clientName").getValue().toString()
                                            + ",оцените нас");
                                }
                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError error) {

                            }
                        };

                        DatabaseReference child = getmyNameRef.child(uid);
                        child.addValueEventListener(refTwoRaw);
                        listeners.put(child, refTwoRaw);
                        zavershitzakaz.setOnClickListener(view1 -> {
                            shopipht.child(uid).removeValue();
                            proverka.child(uid + shopAdapter.getShopUid()).removeValue();
                        });

                        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
                            @Override
                            public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
                                String text = "";
                                if (v < 1) {
                                    text = "Отвратительно";
                                } else if (v < 2) {
                                    text = "Плохо";
                                } else if (v < 3) {
                                    text = "Cредне";
                                } else if (v < 4) {
                                    text = "Нормально";
                                } else if (v < 5) {
                                    text = "Хорошо";
                                } else if (v < 6) {
                                    text = "Отлично";
                                }
                                texrstyle.setText(text);
                                texrstyle.setHint(String.valueOf(v));

                            }
                        });
                        dialog.show();

                        appCompatButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {

                                if (TextUtils.isEmpty(opisanieotzyv.getText().toString())) {
                                    Toast.makeText(getContext(), "Опишите ваше мнение ", Toast.LENGTH_SHORT).show();
                                } else {
                                    Calendar calendar = Calendar.getInstance();

                                    SimpleDateFormat currentDate = new SimpleDateFormat("ddMMyyyy");
                                    saveCurrentDate = currentDate.format(calendar.getTime());

                                    SimpleDateFormat currentTime = new SimpleDateFormat("HHmmss");
                                    saveCurrentTime = currentTime.format(calendar.getTime());

                                    ProductRandomKey = saveCurrentDate + saveCurrentTime;

                                    HashMap<String, Object> men = new HashMap<>();
                                    men.put("Value", texrstyle.getHint().toString());
                                    men.put("ShopUid", shopAdapter.getShopUid());
                                    men.put("text", opisanieotzyv.getText().toString());
                                    otzyvRef.child(shopAdapter.getShopId()).child(uid + ProductRandomKey).updateChildren(men).addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if (task.isSuccessful()) {
                                                Toast.makeText(getContext(), "Отзыв отправлен,спасибо", Toast.LENGTH_SHORT).show();

                                                proverka.child(uid + shopAdapter.getProductId() + shopAdapter.getShopId()).removeValue();
                                                dialog.dismiss();
                                            } else {

                                                String message = task.getException().toString();
                                                Toast.makeText(getContext(), "Ошибка" + message, Toast.LENGTH_SHORT).show();
                                                dialog.dismiss();
                                            }
                                        }
                                    });
                                }
                            }
                        });
                    }
                } else {
                    dialog.dismiss();
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        };
        Query query = proverka.orderByChild("Zakazstatus").equalTo(uid);
        query.addValueEventListener(mRefUserListener);
        listeners.put(query, mRefUserListener);
    }

    @Override
    public void onResume() {
        super.onResume();

        FirebaseRecyclerOptions<ShopAdapter> options = new FirebaseRecyclerOptions.Builder<ShopAdapter>()
                .setQuery(shops, ShopAdapter.class).build();
        horizAdapter= new FirebaseRecyclerAdapter<ShopAdapter, HorizontalShopHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull HorizontalShopHolder holder, int position, @NonNull ShopAdapter model) {
                textesti.setVisibility(View.VISIBLE);
                holder.glavmagname.setText(model.getMagName());
                holder.glavmagname.setHint(model.getMagUid());
                ValueEventListener listener = new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        testintTwo = Integer.valueOf("" + snapshot.getChildrenCount());
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                    }
                };
                DatabaseReference child = prover.child(holder.glavmagname.getHint().toString());
                child.addListenerForSingleValueEvent(listener);
                listenersTwo.put(child, listener);
                ValueEventListener list2 = new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        if (snapshot.exists() && snapshot.getChildrenCount() > 0) {
                            double diablot = 0.0;
                            for (DataSnapshot ds : snapshot.getChildren()) {
                                ShopAdapter shopAdapter = ds.getValue(ShopAdapter.class);
                                assert shopAdapter != null;
                                String string = shopAdapter.getValue();
                                otztvValuestwo = Double.parseDouble(string);
                                diablot = diablot + otztvValuestwo;
                                itogt = diablot / testint;
                                holder.rateyellow1g.setVisibility(getRateVisibility(itogt >= 0.5));
                                holder.rateyellow2g.setVisibility(getRateVisibility(itogt >= 1.5));
                                holder.rateyellow3g.setVisibility(getRateVisibility(itogt >= 2.5));
                                holder.rateyellow4g.setVisibility(getRateVisibility(itogt >= 3.5));
                                holder.rateyellow5g.setVisibility(getRateVisibility(itogt >= 4.5));
                                String result=String.format("%.3f",itogt);
                                holder.textstarg.setText(result);
                            }
                        }
                    }

                    private int getRateVisibility(boolean b) {
                        return b ? View.VISIBLE : View.INVISIBLE;
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                    }
                };
                DatabaseReference child1 = otzest.child(holder.glavmagname.getHint().toString());
                child1.addValueEventListener(list2);
                listenersTwo.put(child1, list2);
                Transformation transformation = new RoundedTransformationBuilder().borderColor(Color.WHITE).borderWidthDp(3).cornerRadius(15).oval(false).build();
                Picasso.get().load(model.getMagLogo()).transform(transformation).into(holder.imageGlavMag);
            }

            @Override
            public HorizontalShopHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_horizontal_shop, parent, false);
                HorizontalShopHolder holder = new HorizontalShopHolder(view);
                return holder;
            }
        };
        HorizontalRec.setAdapter(horizAdapter);
        FirebaseRecyclerOptions<ShopAdapter> Options = new FirebaseRecyclerOptions.Builder<ShopAdapter>()
                .setQuery(shops, ShopAdapter.class).build();
     VerticalAdapter = new FirebaseRecyclerAdapter<ShopAdapter, VerticalShopHolder>(Options) {
            @Override
            protected void onBindViewHolder(@NonNull VerticalShopHolder holder, int position, @NonNull ShopAdapter model) {
                Transformation transformation = new RoundedTransformationBuilder().borderColor(Color.WHITE).borderWidthDp(3).cornerRadius(7).oval(false).build();
                Picasso.get().load(model.getMagLogo()).transform(transformation).into(holder.imageLogoApteka);
                holder.aotekaname.setText(model.getMagName());
                holder.aotekaname.setHint(model.getMagUid());
                Log.d("Окси", holder.aotekaname.getHint().toString());
                ValueEventListener listener = new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        testint = Integer.valueOf("" + snapshot.getChildrenCount());
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                    }
                };
                DatabaseReference child = prover.child(holder.aotekaname.getHint().toString());
                child.addListenerForSingleValueEvent(listener);
                listeners.put(child, listener);
                ValueEventListener list1 = new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        if (snapshot.exists() && snapshot.getChildrenCount() > 0) {
                            double diablo = 0.0;
                            for (DataSnapshot ds : snapshot.getChildren()) {
                                ShopAdapter shopAdapter = ds.getValue(ShopAdapter.class);
                                assert shopAdapter != null;
                                String string = shopAdapter.getValue();
                                otztvValues = Double.parseDouble(string);
                                diablo = diablo + otztvValues;
                                itog = diablo / testint;
                                holder.rateyellow1.setVisibility(getRateVisibility(itog >= 0.5));
                                holder.rateyellow2.setVisibility(getRateVisibility(itog >= 1.5));
                                holder.rateyellow3.setVisibility(getRateVisibility(itog >= 2.5));
                                holder.rateyellow4.setVisibility(getRateVisibility(itog >= 3.5));
                                holder.rateyellow5.setVisibility(getRateVisibility(itog >= 4.5));
                                String result=String.format("%.3f",itog);
                                holder.textstar.setText(result);
                            }
                        }
                    }
                    private int getRateVisibility(boolean b) {
                        return b ? View.VISIBLE : View.INVISIBLE;
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                    }
                };
                DatabaseReference child1 = otzest.child(holder.aotekaname.getHint().toString());
                child1.addValueEventListener(list1);

                listeners.put(child1, list1);
            }

            @Override
            public VerticalShopHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_vertical_shop
                        , parent, false);
                return new VerticalShopHolder(view);
            }
        };
        recAptek.setAdapter(VerticalAdapter);


        VerticalAdapter.startListening();
        horizAdapter.startListening();

    }

    @Override
    public void onPause() {
        super.onPause();
        for (Map.Entry<Query, ValueEventListener> entry : listeners.entrySet()) {
            entry.getKey().removeEventListener(entry.getValue());
        }

        for (Map.Entry<Query, ValueEventListener> entry : listenersTwo.entrySet()) {
            entry.getKey().removeEventListener(entry.getValue());
        }
       horizAdapter.stopListening();
       VerticalAdapter .stopListening();
    }


}

ShopAdapter

public class ShopAdapter {
    private String ZaverName,ProductId,shopId,Value,ShopUid,Zakazstatus,MagName,MagCity,MagAdress,MagUid,MagLogo,MagNumberReg,MagNumber,MagCategory;
    public ShopAdapter() {

    }
    public ShopAdapter(String ZaverName, String ProductId, String shopId, String Value, String ShopUid, String Zakazstatus, String magName, String magCity, String magAdress, String magUid, String magLogo, String magNumberReg, String magNumber, String magCategory) {
       this. MagName = magName;
       this.Zakazstatus=Zakazstatus;
      this.  MagCity = magCity;
      this.Value=Value;
      this.ZaverName=ZaverName;
      this.shopId=shopId;
    this.MagAdress = magAdress;
     this.MagUid = magUid;
     this.ShopUid=ShopUid;
    this.MagLogo = magLogo;
    this.ProductId=ProductId;
        this.MagNumberReg = magNumberReg;
     this.MagNumber = magNumber;
     this.MagCategory = magCategory;
    }


    public String getZaverName() {
        return ZaverName;
    }

    public void setZaverName(String zaverName) {
        ZaverName = zaverName;
    }

    public String getProductId() {
        return ProductId;
    }

    public void setProductId(String productId) {
        ProductId = productId;
    }

    public String getShopId() {
        return shopId;
    }

    public void setShopId(String shopId) {
        this.shopId = shopId;
    }

    public String getValue() {
        return Value;
    }

    public void setValue(String value) {
        Value = value;
    }

    public String getShopUid() {
        return ShopUid;
    }

    public void setShopUid(String shopUid) {
        ShopUid = shopUid;
    }

    public String getZakazstatus() {
        return Zakazstatus;
    }

    public void setZakazstatus(String zakazstatus) {
        Zakazstatus = zakazstatus;
    }

    public String getMagName() {
        return MagName;
    }

    public void setMagName(String magName) {
        MagName = magName;
    }

    public String getMagCity() {
        return MagCity;
    }

    public void setMagCity(String magCity) {
        MagCity = magCity;
    }

    public String getMagAdress() {
        return MagAdress;
    }

    public void setMagAdress(String magAdress) {
        MagAdress = magAdress;
    }

    public String getMagUid() {
        return MagUid;
    }

    public void setMagUid(String magUid) {
        MagUid = magUid;
    }

    public String getMagLogo() {
        return MagLogo;
    }

    public void setMagLogo(String magLogo) {
        MagLogo = magLogo;
    }

    public String getMagNumberReg() {
        return MagNumberReg;
    }

    public void setMagNumberReg(String magNumberReg) {
        MagNumberReg = magNumberReg;
    }

    public String getMagNumber() {
        return MagNumber;
    }

    public void setMagNumber(String magNumber) {
        MagNumber = magNumber;
    }

    public String getMagCategory() {
        return MagCategory;
    }

    public void setMagCategory(String magCategory) {
        MagCategory = magCategory;
    }
}



VerticalShopHolder


public class VerticalShopHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    public TextView aotekaname,textcityapt,textadresssapt,aotekaas1,textmedes,textstar;
    public RoundedImageView imageLogoApteka;
    public CardView card_item;
    public ImageView rateyellow1,rateyellow2,rateyellow3,rateyellow4,rateyellow5;
public ItemClickListener itemClickListener;

    public VerticalShopHolder(View iteemView){
        super(iteemView);
        aotekaname=iteemView.findViewById(R.id.aotekaname);
       /// textcityapt=iteemView.findViewById(R.id.textcityapt);
       /// textadresssapt=iteemView.findViewById(R.id.textadresssapt);
        imageLogoApteka=iteemView.findViewById(R.id.imageLogoApteka);
        rateyellow1=iteemView.findViewById(R.id.rateyellow1);
        rateyellow2=iteemView.findViewById(R.id.rateyellow2);
        rateyellow3=iteemView.findViewById(R.id.rateyellow3);
        textmedes=iteemView.findViewById(R.id.textmedes);
        aotekaas1=iteemView.findViewById(R.id.aotekaas1);
        textstar=iteemView.findViewById(R.id.textstar);
        rateyellow4=iteemView.findViewById(R.id.rateyellow4);
        rateyellow5=iteemView.findViewById(R.id.rateyellow5);
        card_item=iteemView.findViewById(R.id.card_item);
card_item.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent=new Intent(view.getContext(), TovarActivity.class);
        intent.putExtra("ShopUid",aotekaname.getHint().toString());
view.getContext().startActivity(intent);

    }
});
    }
    public void setItemClickListner(ItemClickListener listner){this.itemClickListener=listner;}

    @Override
    public void onClick(View view){
       itemClickListener.onClick(view,getAdapterPosition(),false);
    }
}


HorizontalShopHolder


public class HorizontalShopHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    public TextView glavmagname,textstarg;
    public RoundedImageView imageGlavMag;
    public ItemClickListener itemClickListener;
public ImageView rateyellow1g,rateyellow2g,rateyellow3g,rateyellow4g,rateyellow5g;
    public HorizontalShopHolder(View itemView){
        super(itemView);
        glavmagname=itemView.findViewById(R.id.glavmagname);
        imageGlavMag=itemView.findViewById(R.id.imageGlavMag);
        rateyellow1g=itemView.findViewById(R.id.rateyellow1g);
        rateyellow2g=itemView.findViewById(R.id.rateyellow2g);
        textstarg=itemView.findViewById(R.id.textstarg);
        rateyellow3g=itemView.findViewById(R.id.rateyellow3g);
        rateyellow4g=itemView.findViewById(R.id.rateyellow4g);
        rateyellow5g=itemView.findViewById(R.id.rateyellow5g);
    }
    public void setItemClickListner(ItemClickListener listner){this.itemClickListener=listner;}

    @Override
    public void onClick(View view){
        itemClickListener.onClick(view,getAdapterPosition(),false);
    }
}



Ответы (0 шт):