ハンドラーを使用して実行可能なインスタンスをポストするスレッドがあります。それはうまく動作しますが、Runnableインスタンスで使用するためにparamsをどのように渡すのかについて興味がありますか?たぶん、私はこの機能がどのように機能するのか理解していないだけかもしれません。
「なぜこれが必要なのか」という質問を先取りするために、UIスレッドにコールバックして、実際に何を描画するかを伝える必要があるスレッドアニメーションがあります。
パラメーターを受け入れるコンストラクターでRunnable
を実装するクラスで実行できますが、
public class MyRunnable implements Runnable {
private Data data;
public MyRunnable(Data _data) {
this.data = _data;
}
@override
public void run() {
...
}
}
パラメーター化されたコンストラクターでRunnableクラスのインスタンスを作成できます。
MyRunnable obj = new MyRunnable(data);
handler.post(obj);
さまざまな方法がありますが、最も簡単な方法は次のとおりです。
final int param1 = value1;
final int param2 = value2;
... new Runnable() {
public void run() {
// use param1 and param2 here
}
}
情報をRunnable
に伝達する必要がある場合は、常にRunnable
オブジェクトコンストラクターにこの情報を取得させるか、Runnable
に他のメソッドを持たせて、この情報を取得するか、(Runnable
が匿名の内部クラスである場合)final
がアクセスできるように適切な値Runnable
を宣言できます。
お役に立てれば!
上記の答えのいずれかを使用できますが、質問が本当にAndroidについて心配している場合は、AsyncTaskも使用できます。