Outofmemeoryerror (viewpager ) Galeria de imagens

71 views
Skip to first unread message

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 10:23:43 AM6/30/13
to androidb...@googlegroups.com
faço o download de umas imagens
ai pego essas imagens e faço uma galeria usando as imagens
tenho cerca de 8 gallerias e cada galeria com 20 imagens
tudo isso em um grid layout...
dai quando vou exibir as imagens das gallerias da falta de moria, mais se a galeria é com pouca imagens  funciona perfeitamente...
mais tb se saiu de uma galeria e entro em outra da falta de memoria

segue o codigo......


public class Galeria extends Activity {
    List<String> paths;
    ArrayList<Bitmap> images;
    private String id;
    private DataBaseAdapter dbadapter;
   
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        finish();
        super.onBackPressed();
    }
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

        // ActionBar actionBar = getActionBar();
        // actionBar.show();
        // actionBar.setDisplayHomeAsUpEnabled(true);
//        getActionBar().hide();
       
        setContentView(R.layout.activity_galeria);
       
        Log.i("teste", "on create ");
       
        Intent intent = getIntent();
        id = getIntent().getStringExtra("idacessoria"); // recebo o id da galeria para buscar as imagens
        Log.i("teste", "on create "+id);
       
        dbadapter = new DataBaseAdapter();
        paths = dbadapter.getImage(getApplicationContext(), Integer.parseInt(id));//faço a busca das iamgens
       
        Log.i("teste", "on create paths  "+paths);
         
        images = new ArrayList<Bitmap>();
        for (String path : paths) {// em cada item do array de bitmap eu coloca o nome da imagem
       
            images.add(getAssetFile(path.toString()));
            Log.i("teste", "on create paths  "+paths);
        }

        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);

       
       
    }

    /**
     * recebe o nome do arquivo e
     * @param fileName nome do arquivo
     * @return imagem da galeria
     */
    public Bitmap getAssetFile(String fileName) {
        Bitmap bitmap = null;
        try {
           
            File filePath = getFileStreamPath(fileName);       
            bitmap = BitmapFactory.decodeFile(filePath.toString());

            return bitmap;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
        return bitmap;
    }

    private class ImagePagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return images.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
//            return view == object;
        }
       
        @Override
        public void finishUpdate(View arg0) {
            // TODO Auto-generated method stub

        }
       
        @Override
        public void restoreState(Parcelable arg0, ClassLoader arg1) {
            // TODO Auto-generated method stub
        }
        @Override
        public Parcelable saveState() {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public void startUpdate(View arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            Context context = Galeria.this;
            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_zero);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setImageBitmap(images.get(position));
//            imageView.setImageBitmap(getAssetFile(paths.get(position)));

            ((ViewPager) container).addView(imageView);

            return imageView;
        }

//        @Override
//        public void destroyItem(ViewGroup container, int position, Object object) {
//            ((ViewPager) container).removeView((ImageView) object);
//        }
       
        @Override
        public void destroyItem(View collection, int position, Object o) {
                   View view = (View) o;
                ((ViewPager) collection).removeView(view);
                view = null;
               
//                 final View view = (View)o;
//                 ((ViewPager) collection).removeView(view);
        }
       

    }

}

Ray da Costa

unread,
Jun 30, 2013, 10:27:54 AM6/30/13
to androidb...@googlegroups.com

Tenta limpar memoria.Deve estar mantendo arquivos em memoria....

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 10:30:30 AM6/30/13
to androidb...@googlegroups.com
sabe como faço isso ?

vou pesquisar


2013/6/30 Ray da Costa <rayda...@gmail.com>

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/r-kDOQrgeeQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 10:34:46 AM6/30/13
to androidb...@googlegroups.com
estou colocando assim qdo saiu da galleria


    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        finish();
        super.onBackPressed();
    }


2013/6/30 Felippe dos Santos Ferreira <felippen...@gmail.com>

Ray da Costa

unread,
Jun 30, 2013, 10:38:00 AM6/30/13
to androidb...@googlegroups.com

Todas as vezes q estao e global. Todas as vezes q trocar de galaria limpa elas. Nao deixa acumular. Esta seria uma alternativa.  Veja vi pouco do seu códigoas parece que pode resolver se o primeiro carregamento funciona o segundo so tem q limpar

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 10:50:12 AM6/30/13
to androidb...@googlegroups.com
tah ente4ndi...
mais como limpar ????


android.os.Process.killProcess(android.os.Process.myPid());

luciofm

unread,
Jun 30, 2013, 10:51:19 AM6/30/13
to androidb...@googlegroups.com

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 2:17:18 PM6/30/13
to androidb...@googlegroups.com
olhei o exemplo mais não se enquadra....
primeiro eu faço o donwload das imagens, .... e dps eu exibo na gallery

mais vou continuar tentando qualquer coisa eu posto aqui


2013/6/30 luciofm <luc...@gmail.com>

Felippe dos Santos Ferreira

unread,
Jun 30, 2013, 7:02:45 PM6/30/13
to androidb...@googlegroups.com
nada ainda se alguem puder ajudar



2013/6/30 Felippe dos Santos Ferreira <felippen...@gmail.com>

Felippe dos Santos Ferreira

unread,
Jul 2, 2013, 4:34:53 PM7/2/13
to androidb...@googlegroups.com
alguem ai que consiga me ajudar....??

Eric Saboia

unread,
Jul 2, 2013, 4:42:12 PM7/2/13
to androidb...@googlegroups.com
Felippe, rolou uma thread bem parecida onde consegui resolver meu problema. Dá uma olhada: https://groups.google.com/forum/#!topic/androidbrasil-dev/5Iz28gKC5d4


--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Eric Saboia - eric.saboia.org

Beautiful is better than ugly,
Explicit is better than implicit,
Simple is better than complex,
Complex is better than complicated.

The Zen of Python, by Tim Peters

Felippe dos Santos Ferreira

unread,
Jul 2, 2013, 4:44:33 PM7/2/13
to androidb...@googlegroups.com
https://gist.github.com/ericsaboia/e34e9b3b235e25c27d20

estou vendo este link no git....

mais o que pega é que minhas imagens jah foram baixadas....

e onde eu faço a lru... no adaqpter ou actv...


2013/7/2 Eric Saboia <esa...@gmail.com>

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/r-kDOQrgeeQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Felippe dos Santos Ferreira

unread,
Jul 2, 2013, 4:46:26 PM7/2/13
to androidb...@googlegroups.com
e meu caso é quando pegos as imagens pra formar uma galery, usando o image view


2013/7/2 Felippe dos Santos Ferreira <felippen...@gmail.com>

André Luiz R. Silva

unread,
Jul 2, 2013, 8:32:44 PM7/2/13
to androidb...@googlegroups.com
Usa essa api que já faz isso pra você.


Atenciosamente,

André Luiz R. Silva
@andreronsilva

Wellington Cabral

unread,
Jul 3, 2013, 8:37:00 AM7/3/13
to androidb...@googlegroups.com
Felippe,

Esse post vai resolver seu problema


Em domingo, 30 de junho de 2013 11h23min43s UTC-3, Felippe dos Santos Ferreira escreveu:
Reply all
Reply to author
Forward
0 new messages