別のスレッドで関数を実行する次のコードがあります。
Button buttonb = (Button) this.findViewById(R.id.buttonb);
buttonb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
…
progressBar.setVisibility(View.VISIBLE);
Thread thread = new Thread() {
@Override
public void run() {
matrixOperation(sourcePhoto);
}
};
thread.start();
progressBar.setVisibility(View.INVISIBLE);
…
}
});
しかし、実行すると、次のエラーが発生します。
Can't create handler inside thread that has not called Looper.prepare()
検索したところ、このエラーの理由の 1 つは「バックグラウンド スレッドから AsyncTask を実行できません。の「スレッド化ルール」セクションを参照してください。ただし、これはメイン アクティビティから呼び出しているバックグラウンド スレッドではありません。
これを修正する方法を教えてください。