当我做大循环时,应用程序花费太多RAM

时间:2017-01-05 13:55:23

标签: java android ram

我有这个代码,我想做同样的事情,但花费更少的内存。有没有想过在我生成的300 ImageView或类似的东西中设置图像加载器来解决这个问题?

DisplayMetrics lDisplayMetrics = getResources().getDisplayMetrics();
int widthPixels = lDisplayMetrics.widthPixels;
for (int getDrawables = 0; getDrawables < 300; getDrawables++)
{
    final ImageView icoView = new ImageView(ImageEditor.this);
    icoView.setImageResource(getResources().getIdentifier("icon_"+getDrawables, "drawable", getPackageName()));
    icoView.setLayoutParams(new LinearLayout.LayoutParams(widthPixels/7,widthPixels/7));
    gridlayout.addView(icoView);
    int idGen = View.generateViewId();
    icoView.setId(idGen);
    icoView.setTag("icon_"+getDrawables);
    gridlayout.setColumnCount(6);
}

2 个答案:

答案 0 :(得分:2)

不要在布局中添加这么多ImageView。无论如何我们都不会立刻看到它们。使用管理视图回收的GridViewRecyclerView之类的内容。

答案 1 :(得分:0)

<强>解决方案: 添加new drawables但分辨率较低,并在那里使用我的贴纸&#39;选择。使用GridView作为Recycler我只减少500MB的RAM使用量。 我看到的另一种方法是将drawable转换为位图,然后将调整大小设置为位图。