2016-08-21 13 views
0

サーバーにデータを送信するための私のコードをキャンセルしたいAsynctask私は多くの方法を試すが、私はキャンセルできませんでしたAsynctaskどうすればいいですか?どのようにキャンセルAsyncTaskデータを送信するとき

public class sendcomment extends AsyncTask{ 


@Override 
protected void onPreExecute() { 
    // TODO Auto-generated method stub 

    super.onPreExecute(); 
    pr = ProgressDialog.show(sendques.this, null, null, true); 
    pr.setContentView(R.layout.progressdialog); 
    pr.getWindow().setBackgroundDrawable(newColorDrawable(android.graphics.Color.TRANSPARENT)); 
    pr.setCancelable(true); 
    pr.show(); 

    pr.setOnCancelListener(new ProgressDialog.OnCancelListener() {   
     @Override 
     public void onCancel(DialogInterface arg0) { 


      pr.cancel(); 


      new sendcomment().cancel(true); 
     } 
    }); 

} 

    @Override 
    protected Object doInBackground(Object... arg0) { 
     // TODO Auto-generated method stub 



     try{ 
      String data=URLEncoder.encode("name","utf8")+"="+URLEncoder.encode(ename.getText().toString()+"","utf8"); 
      data+="&"+URLEncoder.encode("email","utf8")+"="+URLEncoder.encode(eemail.getText().toString()+"","utf8"); 
      data+="&"+URLEncoder.encode("phone","utf8")+"="+URLEncoder.encode(ephone.getText().toString()+"","utf8"); 
      data+="&"+URLEncoder.encode("question","utf8")+"="+URLEncoder.encode(equestion.getText().toString()+"","utf8"); 
         data+="&"+URLEncoder.encode("serial","utf8")+"="+URLEncoder.encode(phoneserialnumber+"","utf8"); 
      data+="&"+URLEncoder.encode("model","utf8")+"="+URLEncoder.encode(devicemodel+"","utf8"); 
      data+="&"+URLEncoder.encode("androidv","utf8")+"="+URLEncoder.encode(androidOS+"","utf8"); 


      URL link=new URL(Main.url+"getquestion.php"); 
      URLConnection connect=link.openConnection(); 


      //send data 
      connect.setDoOutput(true); 
      OutputStreamWriter wr=new OutputStreamWriter(connect.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 

      BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream())); 

      StringBuilder sb=new StringBuilder(); 

      String line=null; 

      while((line=reader.readLine()) != null){ 

       sb.append(line); 
      } 
      res=sb.toString(); 

     }catch(Exception e){ 

      res=e.toString(); 

     } 

     return ""; 

    } 

    @Override 
    protected void onPostExecute(Object result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     if(res.equals("ok")){ 


      Builder alert = new AlertDialog.Builder(sendques.this); 
      alert.setTitle("your code: "+pnom+""); 
      alert.setMessage("your comment recieved!"); 
      alert.setPositiveButton("ok", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          // Finish activity 
          finish(); 
         } 
        });; 
      alert.show(); 


      pr.cancel(); 
     } 


    } 



}` 

送信データとデータのための私のコードのそのすべてはあなたが新しいタスクをキャンセルしようと

答えて

0

を試してみてください - 代わりnew sendcomment().cancel(true);

sendcomment.this.cancel(true);

試してみて、それをテストするために、知っているAsyncTaskが正常にキャンセルされた場合、onPostExecute()ウォン」代わりにonCancelled()が実行されるので、onCancelled()に何かを入れて、それが呼び出されたかどうかを知ることができます。そうであれば、AsyncTaskはキャンセルされます。

+0

woooowそれはスイスのような仕事です! ありがとうございました。 –

0
new sendcomment().cancel(true); 

ありがとう押しボタン

で送信します。

mySendCommentTask = new sendcomment(); 
mySendCommentTask.cancel(true); 

P.S AsyncTaskを使用しないでください。

+0

tnx、このコードを試してください 'sendcomment mySendCommentTask = new sendcomment(); mySendCommentTask.cancel(真); ' しかし、それは動作しません –

0

痛みをすることができAsyncTaskをキャンセルこの

// Initialize and execute 
sendcomment mySendCommentTask = new sendcomment();  
mySendCommentTask.execute(); 

// and when you need to cancel 
mySendCommentTask.cancel(true); 
+0

tnxたくさん私はこのコードを試しますが、その作業はありません –

関連する問題