recyclerview
がビューをバインドするたびに関数を実行します。これは本当に長い操作なので、UIスレッドから離しておく必要があります。私はスレッドを作成する方法を知っていますが、特定の関数が実行されるたびに新しいスレッドを作成せずに、同じスレッドを使用して2番目のスレッドで常にonBindViewHolder
メソッドのコンテンツを実行する方法はありますか?UIスレッドから特定の種類のタスクを実行するにはどうすればよいですか?
@Override
public void onBindViewHolder (final Adapter adapter, RecyclerView.ViewHolder holder, final int position) {
new Thread(new Runnable() {
@Override
public void run() {
theMethod(adapter, holder, position);
}
}).start();
}
あなたは "1毎回作成することなく、第2のスレッド上で実行する" 手の込んだことができますか? – Pooya
私は間違っている場合は私を修正しますが、onBindViewHolderは複数回呼び出されるため、OPは同じスレッドでコードのすべてのインスタンスを実行し、毎回新しいインスタンスを作成しないようにしたいと考えています。 –
'ExecutorService。 newSingleThreadExecutor'をスレッド管理に使用できます。しかし、私はこのアプローチについて懸念しています。なぜ、あなたは 'onBindViewHolder'メソッドでスレッドを行う必要がありますか?いくつかのポジションのホルダーへの参照は、スクロールのために終了したタスクの後に有効ではないことを覚えておく必要があります。 – jakubbialkowski