Android 如何在不使用倒计时的情况下创建倒计时时钟

Android 如何在不使用倒计时的情况下创建倒计时时钟,android,timer,countdownevent,Android,Timer,Countdownevent,所以基本上我想我已经用倒计时器尝试了所有可能的方法,但是我得到的最好的还不够好。我要做的就是为一个游戏应用程序显示一个倒计时,一旦时间达到0,它就会启动一个活动(startActivity),我从那里得到了它。现在,在我得到“只用倒计时”之前,我会说我已经让它几乎完美地工作了。CountdowntTimer每秒设置一个视图,甚至在它达到0时启动活动,但如果你在计时器启动后点击后退按钮,它将继续运行(16000毫秒)并强制关闭应用程序,我假设是因为CountdowntTimer没有在暂停或停止时取

所以基本上我想我已经用倒计时器尝试了所有可能的方法,但是我得到的最好的还不够好。我要做的就是为一个游戏应用程序显示一个倒计时,一旦时间达到0,它就会启动一个活动(startActivity),我从那里得到了它。现在,在我得到“只用倒计时”之前,我会说我已经让它几乎完美地工作了。CountdowntTimer每秒设置一个视图,甚至在它达到0时启动活动,但如果你在计时器启动后点击后退按钮,它将继续运行(16000毫秒)并强制关闭应用程序,我假设是因为CountdowntTimer没有在暂停或停止时取消它的方法

现在我听说了使用处理程序和计时器来代替TimerTask。每个人似乎都说他们有合适的“cancel();”或“removeCallback”方法。但我看不到任何地方有这样的例子

所以,我想总结一下,我需要你们的帮助,至少是告诉我你们(你们所有优秀的天才程序员)将如何去做。长话短说,能够在时钟敲到0时启动活动,并且能够随时取消

在将我的应用程序发送到市场之前,这是我最不需要做的事情。
提前谢谢各位

在执行启动的活动中:

public class YourActivity extends Activity {
private Runnable runnable = new Runnable(){
    @Override
    public void run() {
        startActivity(new Intent(YourActivity.this, YourOtherActivity.class));
    }};
private Handler handler = new Handler();
@Override public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.linearlayoutwithbutton);
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            stopTimer();
        }
    });
        startTimer();
}
    private void startTimer(){ handler.postDelayed(runnable, 16000); }
    private void stopTimer(){ handler.removeCallbacks(runnable); }
}
linearlayoutwithbutton.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <button android:id="@+id/button1" 
            android:text="Cancel" />
</LinearLayout>

您可以通过覆盖
onStop()
函数来取消倒计时

@Override  
    protected void onStop()        
{

        super.onStop();  
        countdowntimer.cancel();  
}

发布有关如何创建倒计时以及计时器达到0时如何启动活动的代码。为什么不处理“后退”按钮并执行计时器。取消()?这将使计时器停止计数。您还需要在onPause()中执行此操作,因此如果活动暂停,它会停止计时器(除非您希望它在活动暂停时运行…)在我的一个应用程序中,我使用countdowntimer启动游戏,处理回合之间的事务,并为回合计时-它可以很好地工作,可以出于任何原因在任意点取消。(他们接到电话,按home键,按cancel键,回合提前结束等等)引用“我假设因为countdowntimer没有在Pause或onStop上取消它的方法。”如果你将计时器声明为成员变量,你可以在onPause或onStop(或其他任何地方)中执行mYourTimer.cancel()@jkhouw1非常感谢您的回复,非常有意义!现在就试试吧。