超出内存上的一个字节分配字节、分配、内存

2023-09-07 02:06:48 作者:限量版男子°

这是我收到的是Android日志中的错误,正好,这就是:

  12月8日至六日:16:28.763:E / dalvikvm堆(27065):内存不足的184字节分配。
 

在184依赖,有时是184,有时是24,其他42 ......等等......

我到处找,而这个错误是常见的活动,其中装载的照片,我的问题是,我不加载图片,但只有文字。 我的活动是一个ListActivity,在这里我从数据库(纯文本)加载数据,并经过一段时间,所有的时间同样的错误。

任何人都知道该如何解决呢?

非常感谢!

解决方案

由于您使用的是listActivity检查,如果您已实现显示的优化的此处。

我通过实现优化的解决了列表视图类似的问题

lol分配内存字节失败

下面是从 presentation 如何优化 listAdapter

  

较慢的方式

 公开查看getView(INT位置,查看convertView,ViewGroup中父){
     查看项目= mInflater.inflate(R.layout.list_item_icon_text,NULL);
     ((TextView中)item.findViewById(R.id.text))的setText(DATA [位置]);
     ((ImageView的)item.findViewById(R.id.icon))。setImageBitmap(
             (位置和放大器; 1)== 1? mIcon1:mIcon2);
     归还物品;
}
 

  

有道

 公开查看getView(INT位置,查看convertView,ViewGroup中父){
     如果(convertView == NULL){
         convertView = mInflater.inflate(R.layout.item,父母,假);
     }
     ((TextView中)convertView.findViewById(R.id.text))的setText(DATA [位置])。
     ((ImageView的)convertView.findViewById(R.id.icon))。setImageBitmap(
             (位置和放大器; 1)== 1? mIcon1:mIcon2);
     返回convertView;
 }
 

  

最好的方式

 静态类ViewHolder {
        TextView的文字;
        ImageView的图标;
}

 公共查看getView(INT位置,查看convertView,ViewGroup中父){
         ViewHolder持有人;

         如果(convertView == NULL){
             convertView = mInflater.inflate(R.layout.list_item_icon_text,
                     父母,假);
             持有人=新ViewHolder();
             holder.text =(TextView中)convertView.findViewById(R.id.text);
             holder.icon =(ImageView的)convertView.findViewById(R.id.icon);

            convertView.setTag(保持器);
        } 其他 {
            支架=(ViewHolder)convertView.getTag();
        }

        holder.text.setText(DATA [位置]);
        holder.icon.setImageBitmap((位置和放大器; 1)== 1 mIcon1:mIcon2);

        返回convertView;
    }
 

This is the error I am receiving on the Android log, exactly, this is:

08-06 12:16:28.763: E/dalvikvm-heap(27065): Out of memory on a 184-byte allocation.

The "184" depends, sometimes it is 184, sometimes it is 24, other 42......etc....

I was looking everywhere, and this error is common for Activities where loading pictures, my problem is that I am not loading picture, but only text. My Activity is a ListActivity, where I load data from a DataBase(only text), and after a while, all the time the same error.

Anyone knows how to solve it??

Thanks a lot!

解决方案

Since you are using a listActivity check if you have implemented the optimizations shown here.

I solved a similar issue with list view by implementing the optimization

Here are some excerpts from the presentation about optimizing a listAdapter

The Slow way

public View getView(int position, View convertView, ViewGroup parent) { 
     View item = mInflater.inflate(R.layout.list_item_icon_text, null);
     ((TextView) item.findViewById(R.id.text)).setText(DATA[position]); 
     ((ImageView) item.findViewById(R.id.icon)).setImageBitmap( 
             (position & 1) == 1 ? mIcon1 : mIcon2);
     return item; 
}

The Proper way

 public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
         convertView = mInflater.inflate(R.layout.item, parent, false); 
     } 
     ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]); 
     ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap( 
             (position & 1) == 1 ? mIcon1 : mIcon2); 
     return convertView; 
 }

The Best Way

static class ViewHolder { 
        TextView text; 
        ImageView icon; 
}

 public View getView(int position, View convertView, ViewGroup parent) { 
         ViewHolder holder; 

         if (convertView == null) { 
             convertView = mInflater.inflate(R.layout.list_item_icon_text, 
                     parent, false);
             holder = new ViewHolder(); 
             holder.text = (TextView) convertView.findViewById(R.id.text); 
             holder.icon = (ImageView) convertView.findViewById(R.id.icon); 

            convertView.setTag(holder); 
        } else { 
            holder = (ViewHolder) convertView.getTag(); 
        } 

        holder.text.setText(DATA[position]); 
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); 

        return convertView; 
    }

 
精彩推荐
图片推荐