首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在asyncTask中调用处理程序

如何在asyncTask中调用处理程序
EN

Stack Overflow用户
提问于 2017-03-31 06:26:16
回答 2查看 675关注 0票数 1
代码语言:javascript
复制
class GET_DOC_CONTACT_DELAY_TIME extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(PdfView.this);
            pDialog.setMessage("Processing...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();

        }

        protected String doInBackground(String... args) {


            List<NameValuePair> params = new ArrayList<NameValuePair>();

            params.add(new BasicNameValuePair("dhw_gp_id",String.valueOf(Login.reg_id)));
            params.add(new BasicNameValuePair("dreg_id",String.valueOf(E_patId)));
            params.add(new BasicNameValuePair("dslno",String.valueOf(E_slno)));
            params.add(new BasicNameValuePair("ddos",String.valueOf(dosString)));
            params.add(new BasicNameValuePair("ddocid",String.valueOf(doc_id)));
            params.add(new BasicNameValuePair("dimei",String.valueOf(Login.imei)));

            JSONObject json = jsonParser.makeHttpRequest(DOC_SMS, "POST", params);

            final String dm = doc_contaclist.get(current_doc).get("vdocmobile");
            final String delay = doc_contaclist.get(current_doc).get("vdoctime");

            // check for success tag
            try {
                 rsuccess = json.getInt(TAG_RMSUCCESS);

                if (rsuccess == 1) {

                    runOnUiThread(new Runnable() {
                        public void run() {

                            final String message = "Patient "  + patFirstName + " " + patLastName +" with Id : "+ E_patId + "\n"+" is having an emergency and needs diagnosis immediately,";
                            SmsManager.getDefault().sendTextMessage(String.valueOf(dm), null,message, null, null);

                            new AlertDialog.Builder(PdfView.this)
                                    .setTitle("Confirmation Message")
                                    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {

                                            Intent i = new Intent(PdfView.this,Patient_Register.class);
                                            i.putExtra("clear_text",status_info);
                                            startActivity(i);
                                        }
                                    })
                                    .setMessage("ECG Sent to Doctor")
                                    .setIcon(R.drawable.alert1)
                                    .show();

                        }
                    });
                } else if (rsuccess == 0) {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            Toast toast = Toast.makeText(PdfView.this, "Required fields missing", Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.CENTER,0,0);
                            toast.show();

                        }
                    });
                }else if (rsuccess == 2) {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            Toast toast = Toast.makeText(PdfView.this, "Database selection failed", Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.CENTER,0,0);
                            toast.show();

                        }
                    });
                }else if (rsuccess == 3) {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            Toast toast = Toast.makeText(PdfView.this, "Failed to insert", Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.CENTER,0,0);
                            toast.show();

                        }
                    });
                }else if (rsuccess == 4) {

                    runOnUiThread(new Runnable() {
                        public void run() {

                            current_doc++ ;

                             Toast toast = Toast.makeText(PdfView.this, "SMS to next doctor", Toast.LENGTH_SHORT);
                             toast.setGravity(Gravity.CENTER,0,0);
                             toast.show();

                       }
                   });
                }  else if (rsuccess == 5) {
                    runOnUiThread(new Runnable() {
                        public void run() {

                            loop_exit= true;

                            Toast toast = Toast.makeText(PdfView.this, "Processed", Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.CENTER,0,0);
                            toast.show();

                        }
                    });
                }

          Handler handler = new Handler();
       handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Send_sms();
            }
       }, 20000); 



            } catch (JSONException e) {
                e.printStackTrace();
            }



            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            if ((pDialog != null) && pDialog.isShowing()) {
                pDialog.dismiss();
            }
        }
    }

试图在asyncTask方法中调用处理程序,但它抛出错误(应用程序填充)。应该以延迟1分钟或2分钟的时间调用此处理程序。尝试了多种方法。请帮助我在异步任务中调用处理程序。

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-31 06:27:57

根据您的需求,在处理程序方法中调用onPostExecute

onPostExecute =>在UI线程上运行doInBackground(Params.)。

代码语言:javascript
复制
protected void onPostExecute(String file_url) {

     Handler handler = new Handler();
     handler.postDelayed(new Runnable()
        {
        @Override
        public void run() 
           {
            Send_sms();
           }
        }, 20000); //Time Delay
      }
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43133832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档