簡體   English   中英

在Android列表視圖中從url加載位圖時,我該如何擺脫內存異常?

[英]How can i over come out of memory exception while loading bitmaps from url in android list view?

內存不足異常#在處理以下適配器類時,如何解決內存不足異常。 我可以通過使用惰性適配器來解決此問題嗎?

public class myAdapter extends ArrayAdapter<Image>{


    public myAdapter(){
        super(MainActivity.this, R.layout.image,Imagelist);

    }
    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v=convertView;ViewHolder h;
        if(v==null){

            v=getLayoutInflater().inflate(R.layout.image, null);
            ImageView img=(ImageView) v.findViewById(R.id.imageView1);
            img.getLayoutParams().height=500;
            img.getLayoutParams().width=500;

            TextView Title=(TextView)v. findViewById(R.id.textView2);
            TextView desc=(TextView) v.findViewById(R.id.textView1);
            h=new ViewHolder(img,Title,desc);
            v.setTag(h);
        }
         else {
                h =  (ViewHolder) v.getTag();
            }
        final Image image1=Imagelist.get(position);
        //ImageView imageview=(ImageView)v.findViewById(R.id.imageView1);
        h.img.setImageBitmap(image1.getB());



        //=(TextView) v.findViewById(R.id.textView1);
    h.title.setText(" "+image1.getT());
    h.desc.setText(image1.getDesc());
    //Imagelist.clear();

        h.img.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i=new Intent(Intent.ACTION_VIEW,Uri.parse(image1.getVideourl()));
                startActivity(i);
            }
        });

        return v;


    }


}
  class ViewHolder {
    public ImageView img;
    public TextView title;
    public ViewHolder(ImageView img, TextView title, TextView desc) {
        super();
        this.img = img;
        this.title = title;
        this.desc = desc;
    }

}

您可以使用任何圖像加載器庫來加載圖像,而不是從位圖中設置圖像。 萬一圖像太大,可以使用

android:largeHeap =“ true”

給更多的記憶。

據我說,您可以通過調用recycle方法(即image1.recycle();)來消除此錯誤。 調用此方法后,此方法將釋放image1占用的內存。 您也可以訪問http://developer.android.com/training/displaying-bitmaps/index.html ,了解如何有效處理位圖。 希望能幫助到你!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM