我正在构建一个数独游戏,但我在这里遇到了性能问题。
我有这个网格,我想用 81 个单元格填充网格。这些单元格是自定义视图,因为我希望它们中有 10 个标签以及一些功能 blabla。
我现在的问题是我必须创建 81 个子视图(没问题),用我的模型中的数据填充它们(没问题),然后将整个网格添加到我的布局中(biiiig 问题)。
整个建筑是在这样的异步任务中完成的:
protected Void doInBackground(Void... params) {
Model.Cell[][] sudoku = Controller.getInstance().startNewGame(); //call model for a new game
ArrayList<TableRow> rows = ga.generateTable(sudoku); //generate the table
tl = new TableLayout(ga); //create tablelayout
//add the rows to the layout
for (TableRow v : rows) {
tl.addView(v);
}
return null;
}
然后在这完成后:
protected void onPostExecute(Void result) {
super.onPostExecute(result);
RelativeLayout rl = (RelativeLayout) ga.findViewById(R.id.gridContainer); //get the container
//create layout rules
android.widget.RelativeLayout.LayoutParams params = new android.widget.RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
//add the table to the container with the layout
rl.addView(tl, params); //this is slow as hell.
//stop loading indicator
this.loading.dismiss();
}
我不介意有一段时间加载栏。但是我的加载栏正在停止,因为 rl.addView(tl, params) 非常慢。
有人可以帮我如何保持我的主线程快速吗?