
码
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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)