从不同的线程停止倒数计时器

时间:2012-03-09 00:52:12

标签: android

android中有一个取消()方法来取消倒数计时器。但由于倒计时器在另一个线程中运行,如果我从一个按钮OnClickLitener()内部取消它,倒计时器是否会取消。
倒数计时器未在buttonOnclickListener中启动,但必须在onClickListener()内取消。

1 个答案:

答案 0 :(得分:2)

以下是两个按钮和一个计时器的示例: 计时器作为单独的实体运行。 您可以从一个按钮开始,然后停止另一个按钮。

package com.test;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class TimerTestActivity extends Activity {

    CountDownTimer cdt;
    TextView display;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 

        Button start = (Button) findViewById(R.id.startButton);
        start.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                setupCountDown();
                cdt.start();
            }
        });

        Button stop = (Button) findViewById(R.id.stopButton);
        stop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                cdt.cancel();
            }
        });
        display = (TextView) findViewById(R.id.display);
    }

    private void setupCountDown() {
        cdt = new CountDownTimer(10000, 1000) {

            public void onTick(long millisUntilFinished) {
                display.setText("TICK " + millisUntilFinished/1000);
            }

            public void onFinish() {
                display.setText("BUZZZZ");
            }           
        };
    }
}

和main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/display"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

    <Button
        android:id="@+id/startButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start" />

    <Button
        android:id="@+id/stopButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Stop" />

</LinearLayout>