在android中停止线程

时间:2013-07-15 10:25:06

标签: android

我有一个帖子:

handlerStoper.post(new Runnable() {

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

                        }
                    });

如何在其他地方停止此线程?

4 个答案:

答案 0 :(得分:4)

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

handlerStoper.removeCallbacks(null);

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

public final void removeCallbacks (Runnable r)

在API级别1中添加

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

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

答案 1 :(得分:1)

public void run() {
startTime.setText(""+count);
startTime.invalidate();
count++;

if(flag){

                        handlerStoper.postDelayed(this, 1000);

     }
}

如果要停止线程,请将标志值设置为false。

答案 2 :(得分:1)

Handler mhandler = new Handler();

Runnable r = new Runnable(){

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

                    }
                });

//停止线程写入时

mhandler.removeCallbacks(R);

答案 3 :(得分:0)

public final void removeCallbacks (Runnable r)

在API级别1中添加

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

使用removeCallbacks作为@blackbelt Sugested或将runnable实例作为参数传递。

    handlerStoper.removeCallbacks(null);

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