コードで複数のスレッドとハンドラーを実行しています。
そしてこれは私のハンドラーです
PrizeRunnable mTempPotionRunnable = new PrizeRunnable(aaa);
handler.postDelayed(mTempPotionRunnable, 4000);
と
class PrizeRunnable implements Runnable {
String type;
PrizeRunnable(String type) {
this.type = type;
}
public void run() {
synchronized (this) {
if(!mIsHandlerStarted){
if(type.equals(aaa))
// Do something
else if(type.equals(bbb))
// Do something
mIsHandlerStarted = true;
handler.removeCallbacks(this);
}
}
}
}
しかし、同時に実行されることもあります。
理由はわかりません。
更新しました
私はそれを次のように変更しようとします:
handler.postDelayed(mTempPotionRunnable, 4000);
と
Runnable mTempPotionRunnable = new Runnable() {
@Override
public void run() {
synchronized (this) {
if(!mIsHandlerStarted){
// Do something
mIsHandlerStarted = true;
handler.removeCallbacks(mMetalRunnable);
}
}
}
};
それは私の問題を解決するかもしれません。私はこの方法をテストしています。
しかし、パラメータをに渡すことはできませんRunnable
。どうすればいいですか?