web-dev-qa-db-ja.com

アプリケーションがメインスレッドでXMLレイアウトファイルをロードしすぎている

私は、81セルのそれぞれがそれ自体が3x3グリッドである9x9数独グリッドを作成しています。単一のセルは次のようになります。

1 2 3

4 5 6

7 8 9

各番号は、そのセルの鉛筆注釈を表します。この3x3配置を表すcell_layout.xmlというファイルがあります。

私はすでにグリッドを生成することができ、コードは機能します:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.solver_principal);

        TableLayout sudokuGrid = (TableLayout) findViewById(R.id.sudokuGrid);
        sudokuGrid.setShrinkAllColumns(true);
        sudokuGrid.setStretchAllColumns(true);

        TableRow.LayoutParams paramsRow = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
        TableLayout.LayoutParams paramsLayout = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT);

        for(int i = 0; i < 9; ++i)
        {
            TableRow tableRow = new TableRow(SolverActivity.this);
            tableRow.setDividerDrawable(getResources().getDrawable(R.drawable.column_divider));
            tableRow.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
            for(int j = 0; j < 9; ++j)
            {
                View cell = getLayoutInflater().inflate(R.layout.cell_layout, sudokuGrid, false);
                cell.setLayoutParams(paramsRow);
                tableRow.addView(cell);
            }

            tableRow.setLayoutParams(paramsLayout);
            sudokuGrid.addView(tableRow);
        }

    }

上記のコードは、必要なレイアウトの81倍をTableLayoutに膨張させます。

動作するので、問題は何ですか?

アクティビティを作成するには時間がかかりすぎます。グリッドの1行だけでテストしても、メソッドが必要なレイアウトの何倍にも膨らむには時間がかかりすぎます。

私は得ます:

バックグラウンド同時コピーGCによって解放された131244(9MB)AllocSpaceオブジェクト、0(0B) LOSオブジェクト、24%空き、74MB/98MB、一時停止127us合計444.411ms

153フレームをスキップしました!アプリケーションがメインスレッドで実行している作業が多すぎる可能性があります。

誰かが私の状況にもっと良いアプローチを提案できますか? 3x3グリッドを81倍生成する作業は本当に多すぎますか?

ありがとう

編集

そこで、手動でxmlファイルを書き留めようとしました。 XMLを何度も膨らませる必要がないことで状況が改善されると思いましたが、実際には改善されませんでした。まだxmlファイルをロードするだけで、「メインスレッドでの作業が多すぎる」という同じ問題がまだあります。

<TableLayout
        Android:id="@+id/sudokuGrid"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        Android:layout_marginStart="16dp"
        Android:layout_marginTop="16dp"
        Android:layout_marginEnd="16dp"
        Android:divider="@drawable/row_divider"
        Android:showDividers="middle"
        Android:shrinkColumns="*"
        Android:stretchColumns="*"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/solverTitle">

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:divider="@drawable/column_divider"
            Android:showDividers="middle">
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
            <include
                layout="@layout/cell_layout"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                />
        </TableRow>

    </TableLayout>

そして、誰かが試してみたい場合に備えて、これが私のセルのレイアウトです。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <TextView
        Android:id="@+id/cellValue"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        Android:id="@+id/pencilOne"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="1"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilFour"
        app:layout_constraintEnd_toStartOf="@+id/pencilTwo"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        Android:id="@+id/pencilTwo"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="2"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilFive"
        app:layout_constraintEnd_toStartOf="@+id/pencilThree"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilOne"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        Android:id="@+id/pencilThree"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="3"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilSix"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilTwo"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        Android:id="@+id/pencilFour"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="4"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilSeven"
        app:layout_constraintEnd_toStartOf="@+id/pencilFive"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pencilOne" />

    <TextView
        Android:id="@+id/pencilSix"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="6"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilNine"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilFive"
        app:layout_constraintTop_toBottomOf="@+id/pencilThree" />

    <TextView
        Android:id="@+id/pencilSeven"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="7"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/pencilEight"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pencilFour" />

    <TextView
        Android:id="@+id/pencilEight"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="8"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/pencilNine"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilSeven"
        app:layout_constraintTop_toBottomOf="@+id/pencilFive" />

    <TextView
        Android:id="@+id/pencilNine"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="9"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilEight"
        app:layout_constraintTop_toBottomOf="@+id/pencilSix" />

    <TextView
        Android:id="@+id/pencilFive"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        Android:text="5"
        Android:textSize="10sp"
        Android:gravity="center"
        Android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/pencilEight"
        app:layout_constraintEnd_toStartOf="@+id/pencilSix"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/pencilFour"
        app:layout_constraintTop_toBottomOf="@+id/pencilTwo" />
</Android.support.constraint.ConstraintLayout>
11
PhysicsPDF

はじめに

より一般的なアプローチ(より多くのユーザーに役立つ)、に関係なく

メインスレッド

main threadは何をしますか(多くのことを行いますが、オーバーロードしないでください!)?

  • Androidアプリケーションの起動時に常に作成されるデフォルトのプライマリスレッド。

  • UIスレッドとも呼ばれます。

  • 特に指定のない限り、すべてのuser interfaceおよびactivitiesの処理を担当します。

  • Runnableは、スレッド間でのコードの共有を処理することを目的としたinterfaceです。

  • これには、run()という1つのメソッドしか含まれていません。

「Google検索結果」、「ウェブからの注目スニペット」から

インフレーション

メインスレッドで大きな複雑な TableLayout を膨らませるのはinsane

(1)ワーカー(バックグラウンド)スレッドを使用 プロセスとスレッド

Androidのスレッドモデルには2つの単純なルールがあります。

  • UIスレッドをブロックしない
  • UIスレッドの外部からAndroid UI toolkitにアクセスしないでください(AsyncLayoutInflaterなどを除きます)。

(2) AsyncLayoutInflater を試してください。

SolverActivity.Java

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    final AsyncLayoutInflater.OnInflateFinishedListener callback = new AsyncLayoutInflater.OnInflateFinishedListener()
    {
        @Override
        public void onInflateFinished(View view, int resid, ViewGroup parent)
        {
           TableLayout sudokuGrid = (TableLayout) findViewById(R.id.sudokuGrid);
           sudokuGrid.setShrinkAllColumns(true);
           sudokuGrid.setStretchAllColumns(true);

           TableRow.LayoutParams paramsRow = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
           TableLayout.LayoutParams paramsLayout = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT);

           for(int i = 0; i < 9; ++i)
           {
               TableRow tableRow = new TableRow(SolverActivity.this);
               tableRow.setDividerDrawable(getResources().getDrawable(R.drawable.column_divider));
               tableRow.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
               for(int j = 0; j < 9; ++j)
               {
                   View cell = getLayoutInflater().inflate(R.layout.cell_layout, sudokuGrid, false);
                   cell.setLayoutParams(paramsRow);
                   tableRow.addView(cell);
               }

               tableRow.setLayoutParams(paramsLayout);
               sudokuGrid.addView(tableRow);
        }
    };
    if (savedInstanceState == null) {
        AsyncLayoutInflater inflater = new AsyncLayoutInflater(this);
        inflater.inflate(R.layout.solver_principal, null, callback);
    } else {
        View view = getLayoutInflater().inflate(R.layout.solver_principal, null);
        Callback.onInflateFinished(view, R.layout.solver_principal, null)
    }
}

(3)インフレは集中的です(ストレージからの読み取り、XMLの分析、エラーのチェック、リソースの割り当て、メモリ...)

プログラムで膨張させる必要はまったくありません。

膨張する方法ではない

(a) SOレイアウトを膨らませるか、プログラムで作成する必要がありますか?

(b)ここに私が好むアプローチがあります(ImageViewOnCellTouchListenerに基づく小さなプロジェクト4ソース.Javaファイル)。これは変更できます: Android-calendar-view

enter image description here

0
Jon Goodwin