如何停止异步线程?

时间:2012-10-10 07:59:26

标签: android android-asynctask

我正在使用异步任务。我使用此变量初始化我的任务

     fhr_alg = new AddStringTask();

我想使用一个开始和停止按钮,这样当我停止它时,线程取消,并在单击开始按钮时启动一个新线程。 我用

    fhr_alg.cancel(true);

取消任务。在我的onclick事件中为开始按钮,当我写

    fhr_alg.execute;

它显示错误,表明任务仍在运行。我在doInBackground中使用了isCancelled()但没有任何反应。我需要帮助来解决这个问题。

这是我的代码开始和停止按钮

    k.setOnClickListener(new OnClickListener() {

         public void onClick(View arg0) {

            if(task!=null)
            {
                task.cancel(true);
            }
                                                              try {
                w.clearView();

            } catch (Exception e) {
                // TODO: handle exception
            }

         }
         });


     j.setOnClickListener(new OnClickListener() {

         public void onClick(View arg0) {   


             flag = true;

                Thread tt = new Thread()
                {
                    public void run()
                    {
                        try{
                            sleep(100);
                        }catch(Exception e){

                        }finally{

                            AddStringTask task = new AddStringTask();
                            task.execute();                 
                        }
                    }
                };

                tt.start(); 

                 int m=112;
                 String s=""+m;         
                 if(flag)
                 w.loadUrl("javascript:callJS(\""+s+"\")"); 
                 }

它给我一个错误说

    Can't create handler inside thread that has not called Looper.prepare()

1 个答案:

答案 0 :(得分:0)

我认为问题是你调用task.canle(true);听众内部。

尝试在Activity类中创建一个sub,如

public void cancleTask(){
    task.canle(true);
}

并在你的听众中调用此子目录。