android – AsyncTask;调用方法onPreExecute()后调用doInbackground()

android – AsyncTask;调用方法onPreExecute()后调用doInbackground(),第1张

概述我在我的项目中添加了异步库,并且已经检查了,我不知道为什么代码流不会进入asynctask 码 public void doMysql(){ Log.v("doMysql", "accessed"); new AsyncTask<Void, Void, String>() { @Override protected void onPreExecu 我在我的项目中添加了异步库,并且已经检查了,我不知道为什么代码流不会进入asynctask

public voID do@R_403_5605@(){    Log.v("do@R_403_5605@","accessed");    new AsyncTask<VoID,VoID,String>() {        @OverrIDe        protected voID onPreExecute() {            super.onPreExecute();            Log.e("AsyncTask","onPreExecute");        }        @OverrIDe        protected String doInBackground(VoID... params) {            Log.v("AsyncTask","doInBackground");            String msg = "";            DefaulthttpClIEnt httpclIEnt = new DefaulthttpClIEnt();            httpPost httppost = new httpPost("http://172.16.100.172:52273/@R_403_5605@");            ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>();            nameValuePairs.add(new BasicnameValuePair("myday",Integer.toString(day_picker.getYear()) +                     addZero(day_picker.getMonth() + 1) +                     addZero(day_picker.getDayOfMonth())));            nameValuePairs.add(new BasicnameValuePair("mystar",changeStar(day_picker.getMonth() + 1,day_picker.getDayOfMonth())));            nameValuePairs.add(new BasicnameValuePair("mybt",changeBloodType(blood_picker.getValue())));            nameValuePairs.add(new BasicnameValuePair("mynum","" + myPhone.getText()));            nameValuePairs.add(new BasicnameValuePair("yournum","" + partnerPhone.getText()));            nameValuePairs.add(new BasicnameValuePair("myregID",regID));            try {                Log.v("setEntity","before");                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));                Log.v("setEntity","after");            } catch (UnsupportedEnCodingException e1) {                Log.v("UnsupportedEnCodingException","");                e1.printstacktrace();            }            //172.16.101.28            try {                  Log.v("post","before");                httpResponse httpresponse = httpclIEnt.execute(httppost);                Log.v("post","after");                Log.v("httpResponse ",httpresponse.getEntity().toString());            } catch (ClIEntProtocolException e) {                Log.v("ClIEntProtocolException","ClIEntProtocolException");                e.printstacktrace();            } catch (IOException e) {                Log.v("IOException","IOException");                e.printstacktrace();            }            return msg;        }        @OverrIDe        protected voID onPostExecute(String msg) {            Log.v("AsyncTask","onPostExecute");        }    }.execute(null,null,null);}

我在代码“Log.v(”AsyncTask“,”doInBackground“)中有一个日志语句;

但它不会出现在记录器中的Log.v(“AsyncTask”,“doInBackground”);

解决方法 你应该执行你的任务
task.executeOnExecutor(AsyncTask.THREAD_POol_EXECUTOR);

因为在较低版本的AndroID中,所有AsyncTasks都在单个后台线程中执行.所以新任务可能会等待,直到其他任务工作.

在AndroID的较低版本(实际上在HONEYCOMB之前),您无法在执行器上执行AsyncTask.

将您的代码更改为

public voID executeAsyncTask(){    AsyncTask<VoID,String> task = new AsyncTask<VoID,"onPreExecute");        }        @OverrIDe        protected String doInBackground(VoID... params) {            Log.v("AsyncTask","doInBackground");            String msg = null;            // some calculation logic of msg variable            return msg;        }        @OverrIDe        protected voID onPostExecute(String msg) {            Log.v("AsyncTask","onPostExecute");        }    };    if(Build.VERSION.SDK_INT >= 11/*HONEYCOMB*/) {        task.executeOnExecutor(AsyncTask.THREAD_POol_EXECUTOR);    } else {        task.execute();    }}
总结

以上是内存溢出为你收集整理的android – AsyncTask;调用方法onPreExecute()后调用doInbackground()全部内容,希望文章能够帮你解决android – AsyncTask;调用方法onPreExecute()后调用doInbackground()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1132184.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存