虽然我试图执行下面的方法,但我总是收到错误“跳过n帧!应用程序可能在其主线程上做了太多工作。”我曾试图打破这样的线和像这样的线在主线程上做了太多工作的应用程序
Thread thread = new Thread() {
@Override
public void run() {
try {
// for or while loop here
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
然而,那也没有工作。任何可能的修补程序?
public void newSim(int x) {
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
int buttonWidth = (int) (width * 0.15);
int buttonWidth1 = (int) (width * 0.20);
int buttonHeight1 = (int) (height * 0.20);
ArrayList<Point> intersection = new ArrayList<Point>();
final ArrayList<Point> location = new ArrayList<Point>();
int constraint = 0;
int xC = width - buttonWidth1;
int yC = height - buttonWidth1;
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; i++) {
location.add(new Point(i, j));
constraint++;
}
}
for (int i = 0; i < x; i++) {
Random random = new Random();
Point point = new Point();
point = location.remove(random.nextInt(constraint));
while (intersection.contains(point)) {
intersection.add(point);
point = location.remove(random.nextInt(constraint));
}
Button but1 = new Button(this);
but1.setText(String.valueOf(i));
RelativeLayout r = (RelativeLayout) findViewById(R.id.playLayout);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(buttonWidth, buttonWidth);
layoutParams.setMargins(0, 0, buttonWidth, buttonWidth);
but1.setLayoutParams(layoutParams);
r.addView(but1);
constraint--;
}
}
这是在仿真器或真实设备? –
在模拟器上,这可能是为什么?编辑:我实际上在手机上试过它相同的问题 – MJJLAM
我在亚行看到这个日志很多,特别是在使用模拟器时,我认为它不是一个非常糟糕的问题 –