1

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

     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()
4

1 回答 1

0

我认为问题在于您调用 task.canle(true); 在侦听器内部。

尝试在您的 Activity 类中创建一个子类,例如

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

并在你的监听器中调用这个子。

于 2012-10-10T10:52:21.650 回答