一段时间后完成一项活动

时间:2014-03-18 19:12:51

标签: android timer android-activity

我正在尝试开发类似小图片的游戏。我的问题是我想在一段时间后完成游戏。例如在第1级我们有10秒钟来匹配图片。我也希望显示剩余时间。我将感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

由于您还想显示倒计时,我建议使用CountDownTimer。这有一些方法可以在每个“tick”处执行操作,这可以是您在构造函数中设置的间隔。并且它的方法在UI Thread上运行,因此您可以轻松更新TextView等...

使用onFinish()方法,您可以为finish()拨打Activity或进行任何其他适当的操作。

See this answer for an example

使用更清晰的示例进行编辑

这里我有一个内部类extends CountDownTimer

@Override
public void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.some_xml);      
    // initialize Views, Animation, etc...

    // Initialize the CountDownClass
    timer = new MyCountDown(11000, 1000);
}

// inner class
private class MyCountDown extends CountDownTimer
{
    public MyCountDown(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        frameAnimation.start();
        start();            
    }

    @Override
    public void onFinish() {
        secs = 10;
       // I have an Intent you might not need one
        startActivity(intent);
        YourActivity.this.finish(); 
    }

    @Override
    public void onTick(long duration) {
        cd.setText(String.valueOf(secs));
        secs = secs - 1;            
    }   
}

答案 1 :(得分:0)

@nKn很好地描述了它。

但是,如果你不想乱搞Handler。您始终可以通过编写以下内容来延迟系统代码的进度:

Thread.sleep(time_at_mili_seconds);

你可能需要用try-catch包围它,你可以通过Source->轻松添加它。环绕 - >尝试&捉。

答案 2 :(得分:0)

您可以使用postDelayed()的{​​{1}}方法...传递Handler和特定时间,之后Thread将执行如下...

Thread

然后调用private Handler mTimerHandler = new Handler(); private Runnable mTimerExecutor = new Runnable() { @Override public void run() { //here, write your code } }; postDelayed()方法,在指定时间后执行,如下所示...

Handler