मैं एक आवेदन का निर्माण कर रहा हूँ और एक NetworkOnMainThreadException अंदर एक AsyncTask हो रही है अंदरandroid.os.NetworkOnMainThreadException AsyncTask
कॉल:
new POST(this).execute("");
asyncTask:
public class POST extends AsyncTask<String, Integer, HttpResponse>{
private MainActivity form;
public POST(MainActivity form){
this.form = form;
}
@Override
protected HttpResponse doInBackground(String... params) {
try {
HttpPost httppost = new HttpPost("http://diarwe.com:8080/account/login");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("email",((EditText)form.findViewById(R.id.in_email)).getText().toString()));
//add more...
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
return new DefaultHttpClient().execute(httppost);
} catch (Exception e) {
Log.e("BackgroundError", e.toString());
}
return null;
}
@Override
protected void onPostExecute(HttpResponse result) {
super.onPostExecute(result);
try {
Gson gSon = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
gSon.fromJson(IOUtils.toString(result.getEntity().getContent()), LogonInfo.class).fill(form);
} catch (Exception e) {
Log.e("BackgroundError", e.toString());
}
}
}
LogCat:
BackgroundError | android.os.NetworkOnMainThreadException
मैं बहुत उलझन में हूं कि इस अपवाद को एक AsyncTask के doInBackground में किए गए किसी भी विचार में क्यों फेंक दिया गया है?
'AsyncTask' में सब कुछ' UIInBackground() 'को छोड़कर मुख्य यूआई थ्रेड पर है। सामान्य विचार निम्नलिखित उपयोगों जैसे सामान्य उपयोगों का समर्थन करना है: 'onPreExecute()' में अपना 'प्रोग्रेसबार' सेट अप करें, 'प्रगतिबार' को 'onProgressUpdate()' में अपडेट करें, और आखिर में'PostExecute 'में अपने' प्रोग्रेसबार 'को खारिज करें () '। उन सभी कार्यों में यूआई थ्रेड सुरक्षित है जबकि 'doInBackground()' सुरक्षित रूप से जितनी बार आवश्यकता हो उतनी समय ले सकता है। –