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 に答える