所以基本上我认为我已经尝试过使用CountDownTimer处理这个问题的所有方法,但我得到的最好的还不够好。我试图做的就是为游戏应用程序显示一个倒计时器,一旦时间到达0就开始一个活动(startActivity),我从那里得到它。在我得到“只使用CountDownTimer”之前,我会说我已经让它几乎完美地工作了。 CountDownTimer setText每秒都会进入一个视图,甚至在它达到0时启动活动,但是你应该在计时器启动后点击后退按钮,它会继续运行(16000毫安)并强制关闭应用程序,我假设是因为countdowntimer没有在onPause和onStop上取消它的方法。
现在我听说过使用处理程序和使用timertasks的计时器。每个人似乎都说他们有正确的“取消();”或“removeCallback”方法。然而,我无法看到任何有这方面的例子。
所以总结一下,我可以使用你的帮助,至少告诉我你(你所有才华横溢的程序员)会怎么做。长话短说,能够在时钟达到0时启动活动,但随时可以取消。
在将我的应用程序推向市场之前,这是我需要做的最后一件事。 先谢谢你们。
答案 0 :(得分: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>
答案 1 :(得分:0)
您可以通过覆盖onStop()
功能取消Countdowntimer。
@Override
protected void onStop()
{
super.onStop();
countdowntimer.cancel();
}