这是我收到的是Android日志中的错误,正好,这就是:
12月8日至六日:16:28.763:E / dalvikvm堆(27065):内存不足的184字节分配。
在184依赖,有时是184,有时是24,其他42 ......等等......
我到处找,而这个错误是常见的活动,其中装载的照片,我的问题是,我不加载图片,但只有文字。 我的活动是一个ListActivity,在这里我从数据库(纯文本)加载数据,并经过一段时间,所有的时间同样的错误。
任何人都知道该如何解决呢?
非常感谢!
解决方案由于您使用的是listActivity检查,如果您已实现显示的优化的此处。
我通过实现优化的解决了列表视图类似的问题
下面是从 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;
}