异步运行两次

时间:2015-10-09 07:15:30

标签: android android-asynctask

我有一个发布JSON数据的异步任务,我发布的Web服务将其作为电子邮件发送。我现在有一个问题是电子邮件被发送了两次。当任务在doInBackground上时,我已经禁用了按钮并添加了进度对话框。我似乎无法找到它发送两次的错误。在我的日志中,它只返回一次成功。

以下是异步任务的代码

public class postEmail extends AsyncTask<String, String, String>{
            String response;
            @Override

            protected void onPostExecute(String s) {
                pd.dismiss();
                if (response.contains("success")) {
                    Toast.makeText(getActivity(), "Message successfully sent", Toast.LENGTH_LONG).show();
                    Log.d("success", "sent success");
                    clearEditText();
                    editSubject.requestFocus();
                }
                else {
                    Toast.makeText(getActivity(), "Sending Failed. Kindly check your internet connection", Toast.LENGTH_LONG).show();
                }

                super.onPostExecute(s);
            }


            @Override
            protected void onPreExecute() {

                pd = new ProgressDialog(getActivity(), R.style.MyTheme);
                pd.setCancelable(false);
                pd.setMessage("Sending...");
                pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
                pd.show();

                super.onPreExecute();
            }

            @Override
            protected String doInBackground(String... params) {

                    jsonParser = new JSONParser();
                    Log.d("POST EMAIL", "SENDING");
                    String finalEmail = "qcqpsd.admin@stluke.com.ph";
                    String finalCcEmail = "nolascolee@gmail.com";
                    String postUrl = "http://qpsdev.stluke.com.ph/webservice/qpsSendEmail";
                    List<NameValuePair> post_email = new ArrayList<NameValuePair>();
                    post_email.add(new BasicNameValuePair("email", finalEmail));
                    post_email.add(new BasicNameValuePair("subject", finalSubject));
                    post_email.add(new BasicNameValuePair("message", finalMessage));
                    post_email.add(new BasicNameValuePair("sender", finalSender));
                    post_email.add(new BasicNameValuePair("cc", finalCcEmail));
                    response = jsonParser.getJSONFromPostURL(postUrl, post_email);
                    Log.d("result", response);
                    return result = jsonParser.getJSONFromPostURL(postUrl, post_email);
            }


        }

这是按钮的代码:

btnSend.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v) {

        getValue();
            if(isConnected)
            {
                finalizeString();
                new postEmail().execute();
            }
                else{
                Toast.makeText(getActivity(), "Please check your connection",Toast.LENGTH_LONG).show();
            }
    }
});

1 个答案:

答案 0 :(得分:1)

response = jsonParser.getJSONFromPostURL(postUrl, post_email);
                    Log.d("result", response);
                    return result=jsonParser.getJSONFromPostURL(postUrl,post_email);

在这里你发送文件两次,更改返回部分并且不再调用方法mate

相关问题