微小的彩色方块的大网格导致高CPU使用率

时间:2015-11-12 15:50:05

标签: android android-layout cpu-usage

我有一种方法可以创建一个由小小的彩色方块组成的大网格,我注意到这会对CPU使用率产生很大影响。

请注意,此方法只调用一次,问题仍然存在,即使方法完成也不会结束。如果未执行此方法,则cpu使用率仍然很低。

// regionLayout is a vertical LinearLayout
// gridHorizontalSize and gridVerticalSize determines the size of the grid

regionLayout.removeAllViews();
regionLayout.setWeightSum(gridVerticalSize);

ImageView cell = null;
LinearLayout row;
int color;

for(int i=0; i<gridVerticalSize; i++) {

    row = new LinearLayout(context);
    row.setWeightSum(gridHorizontalSize);
    regionLayout.addView(row, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f));

    for(int j=0; j<gridHorizontalSize; j++) {

        cell = new ImageView(context);

        color = /* color is chosen somehow */

        cell.setBackgroundColor(color);

        row.addView(cell, new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1f));
    }
}

我使用了两个LinearLayout制作网格,因为我不熟悉GridLayout,并且不知道如何为水平和垂直尺寸设置weightSum。 我没有特别使用ImageViews,我只需要一些可以设置颜色的东西。

网格通常是30x30左右,因此可以制作900个小彩色方块,我知道它很多,但是没有办法解决它,我需要在屏幕上同时拥有900个时间。

我可以改变哪些方面有所改进?感谢。

1 个答案:

答案 0 :(得分:0)

您应该使用自定义视图,而不是嵌套的线性布局。您在一个屏幕上创建了900个视图对象。这是一个巨大的性能影响。

我有一个网格板视图,我为一个你可以查看参考的项目 https://github.com/shmuelr/ConwaysGame/blob/master/app/src/main/java/com/shmuelrosansky/conwaysgame/views/Board.java