0

我有一个线程:

handlerStoper.post(new Runnable() {

                        @Override
                        public void run() {
                            startTime.setText(""+count);
                            startTime.invalidate();
                            count++;
                            handlerStoper.postDelayed(this, 1000);

                        }
                    });

我怎样才能在其他地方停止这个线程?

4

4 回答 4

4

要从必须调用的处理程序中删除所有回调:

handlerStoper.removeCallbacks(null);

使用参数null 将删除所有 Runnable。如果要删除特定的可运行文件,则必须提供要删除的可运行文件的实例作为参数。

public final void removeCallbacks (Runnable r)

在 API 级别 1 中添加

删除消息队列中所有待处理的 Runnable r 帖子。

http://developer.android.com/reference/android/os/Handler.html#removeCallbacks(java.lang.Runnable)

于 2013-07-15T10:26:56.467 回答
1
public void run() {
startTime.setText(""+count);
startTime.invalidate();
count++;

if(flag){

                        handlerStoper.postDelayed(this, 1000);

     }
}

当您想停止线程时,将标志值设置为 false。

于 2013-07-15T10:28:04.170 回答
1

处理程序 mhandler=new Handler();

可运行 r=新可运行(){

                    @Override
                    public void run() {
                        startTime.setText(""+count);
                        startTime.invalidate();
                        count++;
                        mhandler.postDelayed(r, 1000);

                    }
                });

//当停止线程写入时

mhandler.removeCallbacks(r);

于 2013-07-15T10:35:02.637 回答
0

public final void removeCallbacks (Runnable r)

在 API 级别 1 中添加

删除消息队列中所有待处理的 Runnable r 帖子。

用作@blackbeltremoveCallbacks建议或将可运行实例作为参数传递。

    handlerStoper.removeCallbacks(null);

http://developer.android.com/reference/android/os/Handler.html#removeCallbacks(java.lang.Runnable)

于 2013-07-15T10:27:41.103 回答