Android 从其他线程停止倒计时计时器

Android 从其他线程停止倒计时计时器,android,Android,android中有一个cancel()方法来取消倒计时。但是,由于倒计时在另一个线程中运行,如果我从按钮OnClickLitener()内部取消倒计时,倒计时会取消吗 倒计时计时器未在ButtonClickListener()中启动,但必须在onClickListener()中取消 以下是两个按钮和一个计时器的示例: 计时器作为单独的实体运行。 你可以用一个按钮开始,用另一个按钮停止 package com.test; import android.app.Activity; import a

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

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

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>


在另一个线程中是否可以访问变量cdt?我的意思是,cdt不应该被宣布为最终版本吗?我对原始答案做了一个完整的重写,只包含了这个简单的应用程序。计时器通过单击一个按钮启动,并通过单击另一个按钮取消。