Я строю приложение и я получаю NetworkOnMainThreadException ВНУТРИ в AsyncTaskandroid.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
Я очень смущен, почему это исключение выбрано в doInBackground из AsyncTask, любые идеи?
Все в 'AsyncTask' находится в главном потоке пользовательского интерфейса, за исключением' doInBackground() '. Общая идея состоит в том, чтобы поддерживать общие варианты использования, такие как следующее: Настройте свой 'ProgressBar' в' onPreExecute() ', обновите свой' ProgressBar' в 'onProgressUpdate()' и, наконец, отпустите свой 'ProgressBar' в' onPostExecute (onPostExecute)) '. Все эти функции являются безопасными потоками пользовательского интерфейса, в то время как 'doInBackground()' может безопасно брать столько времени, сколько нужно. –