1

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

现在我听说过使用处理程序和使用带有 timertasks 的计时器。每个人似乎都说他们有适当的“取消();” 或“removeCallback”方法。但是我看不到任何有这方面的例子的地方。

因此,要总结出我可以在哪里使用您的帮助,至少要告诉我您(所有出色的才华横溢的程序员)将如何去做。长话短说,可以在时钟达到 0 时启动活动,但可以随时取消。

这是在将我的应用程序推向市场之前我需要做的最后一件事。 提前谢谢各位。

4

2 回答 2

2

在启动的活动中:

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>
于 2011-05-14T00:45:44.270 回答
0

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

@Override  
    protected void onStop()        
{

        super.onStop();  
        countdowntimer.cancel();  
}
于 2012-03-12T14:45:17.993 回答