使用PostDelayed()同步UI更新

时间:2014-03-21 02:23:00

标签: android handler synchronized

我是Android开发新手,遇到了同步问题。我做了一个简单的匹配游戏,你一次翻转两张牌,并尝试找到匹配。我想要做的是翻转前两张牌:

  • 用户点击新卡(立即执行)
  • 经过一段时间后,如果用户什么都不做

我试图通过标记它同步来保护我的“flipIfFlipped”例程,并检查以确保卡片还没有被翻转,但我仍然得到这种双重翻转行为(我的力翻转必须首先翻转它,然后计时器再次翻转它,反之亦然。)

这是我的CardView(ImageView子类)上的方法:

    public synchronized void flipIfFlipped() {
        if (this.flipped) {
        this.flip();
        }
    }

这是我的onItemClickListener顶部的力量翻转,如果我们点击一​​张卡而两个仍然在上:

CardView lastCard = game.getLastCard(); 
if (null != lastCard){
    lastCard.flipIfFlipped();
}

CardView secondLastCard = game.getSecondLastCard();
if(null != secondLastCard) { 
    secondLastCard.flipIfFlipped();
}

这是我的尝试延迟翻转,后来,如果我们只是不匹配的卡:

new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        clickedImage.flipIfFlipped();
        lastCard.flipIfFlipped();
    }
}, 3000L);

同样,我是一个新手,所以我肯定我可能会遗漏一些基本的东西。

0 个答案:

没有答案