当我使用firebase-storage网址时,毕加索会延迟加载图片。我正在从数据库中提取图片。您认为这是什么原因?

时间:2019-06-20 00:16:35

标签: java android android-studio

我想要HomeActivity页面中的滑块。我的滑块使用Timer()代码。而且我使用ViewPager。当我放置不在数据库中的图像链接并且未使用firebase-storage创建链接时,它的加载速度非常快。但是,将图片上传到firebase-storage之后,从firebase-storage拍摄图片时,大约需要4-5秒钟才能非常缓慢地加载它。我只想知道为什么或是否有解决方案?拜托,我很乐意提供帮助。

HomeActivity.java 请检查slider()函数。我要自动将滑块在Firebase数据库中加载照片。

package com.example.hassucuk;

import android.content.Intent;

import android.os.Bundle;

import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.view.ViewPager;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.support.v4.view.GravityCompat;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.MenuItem;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.hassucuk.Model.slider;

import com.example.hassucuk.Model.urunler;
import com.example.hassucuk.ViewHolder.urunlerViewHolder;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;


import java.util.ArrayList;

import java.util.Timer;
import java.util.TimerTask;

import io.paperdb.Paper;

public class HomeActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {





    private DatabaseReference sliderRootRef,urunlerRootRef;
    private RecyclerView ryclerviewurunler;
    RecyclerView.LayoutManager layoutManager;
    private TextView urunlerimiztxt;

    private  int page=0;
    int dotsCount=0;
    private String[] imageUrls = new String[]{};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        urunlerRootRef = FirebaseDatabase.getInstance().getReference().child("Urunler");
        ryclerviewurunler = findViewById(R.id.urunler_recyclerview);
        ryclerviewurunler.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        ryclerviewurunler.setLayoutManager(layoutManager);


        urunlerimiztxt= (TextView) findViewById(R.id.urunlerimiztxt);

        sliderRootRef = FirebaseDatabase.getInstance().getReference().child("Sliderlar");
        sliderRootRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                ArrayList<String> list=new ArrayList<String>();//Creating arraylist
                ArrayList<String> sliderresimurlim=new ArrayList<String>();//Creating arraylist
                for(DataSnapshot ds : dataSnapshot.getChildren()) {

                    String name =ds.getKey();
                    list.add(name);

                }
                for (int i=0;i<list.size();i++)
                {
                    slider sliderlar = dataSnapshot.child(list.get(i)).getValue(slider.class);

                    sliderresimurlim.add(sliderlar.getImage());


                }

                String[] imageUrls = sliderresimurlim.toArray(new String[sliderresimurlim.size()]);

                sliderr(imageUrls);


            }

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

            }


        });








        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();
        navigationView.setNavigationItemSelectedListener(this);


        FirebaseRecyclerOptions<urunler> options = new FirebaseRecyclerOptions.Builder<urunler>()
                .setQuery(urunlerRootRef,urunler.class)
                .build();

        FirebaseRecyclerAdapter<urunler, urunlerViewHolder> adapter =
                new FirebaseRecyclerAdapter<urunler, urunlerViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull urunlerViewHolder holder, int position, @NonNull  urunler model) {

                        Picasso.get().load(model.getResim()).into(holder.urunresmi);
                        holder.urunadi.setText(model.getAd());
                        holder.urunfiyati.setText(model.getFiyat());
                        holder.urunkilomiktari.setText(model.getFiyat());



                    }

                    @NonNull
                    @Override
                    public urunlerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
                        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_product_cart,parent,false);
                        urunlerViewHolder holder = new urunlerViewHolder(view);
                        return holder;
                    }//xml dosyasını java koduna dönüştürüyor ve o xml görünümünü döndürüyor.
                };
        ryclerviewurunler.setAdapter(adapter);

        adapter.startListening();
    }



    public void sliderr(final String[] imageUrls) {
        final ViewPager viewPager = findViewById(R.id.view_pager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageUrls);

        viewPager.setAdapter(adapter);

        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        if (viewPager.getCurrentItem() == 4) {
                            page = 0;
                        }

                        viewPager.setCurrentItem(page, true);
                        page++;
                    }
                });
            }
        }, 100, 3000);


    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.home, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_sepetim) {
            // Handle the camera action
        } else if (id == R.id.nav_siparisgecmisim) {

        } else if (id == R.id.nav_hesapayarlari) {

        } else if (id == R.id.nav_cikis) {

            Paper.book().destroy();
            Intent intent= new Intent(HomeActivity.this,MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
        }

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;

    }

    @Override
    protected void onStart() {
        super.onStart();





    }


}


String [] =>我使用此数组存储图像。 slide.java(构造函数,我从firebase数据库获取值)

package com.example.hassucuk.Model;

public class slider {

   private String sliderid,image;

   public slider(){

   }

    public slider(String sliderid, String image) {
        this.sliderid = sliderid;
        this.image = image;
    }

    public String getSliderid() {
        return sliderid;
    }

    public void setSliderid(String sliderid) {
        this.sliderid = sliderid;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}

我的json文件

{
  "Sliderlar" : {
    "Haz 17, 201903:36:46" : {
      "image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A161Haz%2017%2C%20201903%3A36%3A46.jpg?alt=media&token=42ad47df-a361-4247-9263-9a3b86758c64",
      "sliderid" : "Haz 17, 201903:36:46"
    },
    "Haz 17, 201903:37:14" : {
      "image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A166Haz%2017%2C%20201903%3A37%3A14.jpg?alt=media&token=e47449e0-a1c5-4870-9101-0936265c9cfb",
      "sliderid" : "Haz 17, 201903:37:14"
    },
    "Haz 17, 201903:37:47" : {
      "image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A164Haz%2017%2C%20201903%3A37%3A47.jpg?alt=media&token=9f681f32-dad3-44c8-a819-e5af02c08605",
      "sliderid" : "Haz 17, 201903:37:47"
    },
    "Haz 17, 201903:37:59" : {
      "image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A165Haz%2017%2C%20201903%3A37%3A59.jpg?alt=media&token=4dbd866c-0aa4-4673-84cd-dac5f81e4f6f",
      "sliderid" : "Haz 17, 201903:37:59"
    }
  },
  "Urunler" : {
    "Haz 16, 201914:11:19" : {
      "aciklama" : "Acılı Fermente Parmak ",
      "ad" : "Acılı Fermente Parmak Sucuk",
      "fiyat" : "53",
      "resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A151Haz%2016%2C%20201914%3A11%3A19.jpg?alt=media&token=f3983562-6a71-414f-9eb7-413991d23a63",
      "saat" : "14:11:19",
      "tarih" : "Haz 16, 2019",
      "urunid" : "Haz 16, 201914:11:19"
    },
    "Haz 16, 201914:12:43" : {
      "aciklama" : "Acılı Parmak",
      "ad" : "Acılı Parmak Sucuk",
      "fiyat" : "53",
      "resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A152Haz%2016%2C%20201914%3A12%3A43.jpg?alt=media&token=fe196025-cab7-4e87-919d-2ce43f23c2e8",
      "saat" : "14:12:43",
      "tarih" : "Haz 16, 2019",
      "urunid" : "Haz 16, 201914:12:43"
    },
    "Haz 16, 201915:16:59" : {
      "aciklama" : "Acısız Fermente Kangal",
      "ad" : "Acısız Fermente Kangal Sucuk",
      "fiyat" : "53",
      "resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A153Haz%2016%2C%20201915%3A16%3A59.jpg?alt=media&token=39d3a104-8c80-4831-b578-c1804450a32f",
      "saat" : "15:16:59",
      "tarih" : "Haz 16, 2019",
      "urunid" : "Haz 16, 201915:16:59"
    },
    "Haz 16, 201915:17:55" : {
      "aciklama" : "Acısız Kangal",
      "ad" : "Acısız Kangal Sucuk",
      "fiyat" : "53",
      "resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A154Haz%2016%2C%20201915%3A17%3A55.jpg?alt=media&token=24a41db6-d25b-480d-ba86-a4bb1fca6983",
      "saat" : "15:17:55",
      "tarih" : "Haz 16, 2019",
      "urunid" : "Haz 16, 201915:17:55"
    },
    "Haz 16, 201915:18:49" : {
      "aciklama" : "Acılı Baton",
      "ad" : "Acılı Baton Sucuk",
      "fiyat" : "53",
      "resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A155Haz%2016%2C%20201915%3A18%3A49.jpg?alt=media&token=17cd8c5e-1bd2-4118-947a-32d8135fc3a0",
      "saat" : "15:18:49",
      "tarih" : "Haz 16, 2019",
      "urunid" : "Haz 16, 201915:18:49"
    }
  },
  "Users" : {
    "05531530440" : {
      "loginpassword" : "123456",
      "loginphone" : "05531530440",
      "name" : "Fatih İnci",
      "role" : "admin"
    },
    "05531530450" : {
      "loginpassword" : "123456",
      "loginphone" : "05531530450",
      "name" : "deneme 1",
      "role" : "user"
    }
  }
}

0 个答案:

没有答案