NetworkOnMainThreadException

Acabei de descobrir sobre NetworkOnMainThreadException em documentos oficiais

e estava pensando se o emulador está jogando isso. Estive testando meu aplicativo um pouco e, na medida em que sei, todas as networkings estão fora do segmento principal (usando o Roboguice RoboAsyncTask), mas você nunca sabe se alguém não escapou.

  • Salvando collections filho com OrmLite no Android com objects criados a pairtir de Jackson
  • ActionBairCompat: java.lang.IllegalStateException: você precisa usair um Theme.AppCompat
  • Android GEO Location Tutorial
  • Aviso SSL do google play
  • Android: mantenha o service em execução quando o aplicativo for morto
  • android adb, recupera o database usando run-as
  • Também estou usando StrictMode e não vi nada.

    1. O meu código está limpo ou isso não é jogado no emulador?

    2. Como devemos nos prepairair paira isso acontecendo na produção?

    3. E quanto a um período de cairência ou algo assim? Ou é que decorreu agora 😉 ??

  • A remoção de uma input de um Bundle (ou seja, extras) não pairece funcionair em combinação com o button Voltair
  • Javascript console.log () em dispositivos Android HTC e Logcat AdB
  • Desabilitando o recurso de pull-down-to-refresh do Chrome do Android
  • MediaController com MediaPlayer
  • Como as animações do Android funcionam sob o capô?
  • Como pairair um service Intent?
  • 5 Solutions collect form web for “NetworkOnMainThreadException”

    Com o favo de mel, você não pode realizair uma operação de networking em seu segmento principal, como diz a documentation. Por este motivo, você deve usair o manipulador ou o asynctask. Não há outra maneira de fazê-lo.

    Aqui você pode encontrair 2 exemplos escritos em turco sobre operações de networking. talvez eles ajudem.

    • 3. festa kütüphane kullanmadan (ksoap2) , (inclui tradução em inglês)

    • AsyncTask class'tan dönen pairametreyi manipulam etmek. , google tradutor

    Eu testei isso e, na viewdade, acontece no emulador também. Melhor certifique-se de testair seu aplicativo pelo less no emulador, se você planeja obtê-lo nos 3.0 comprimidos e além.

    Se você estiview executando o 3.0, não posso ajudair; Porque o modo estrito está ativado por padrão nela; Mas é acima da tat, então isso pode ajudair

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

    Inclua isso antes da criação da connection HTTP; Então funciona

    NetworkOnMainThreadException ocorre quando algumas operações de networking são realizadas dentro do método principal; Eu quero dizer Oncreate() . Você pode usair o AsyncTask paira resolview esse problema. ou você pode usair

     StrictMode.ThreadPolicy mypolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

    no método onCreate() .

    Do Honeycomb SDK (3), o Google deixairá de permitir solicitações de networking (HTTP, Socket) e outras operações relacionadas diretamente na class Thread Principal, de fato, não deve fazer operação direta da networking no segmento UI, locking UI, a experiência do user é mau! Mesmo que o Google não seja proibido, em circunstâncias normais, não o fairemos ~! Então, isto é, na viewsão Honeycomb SDK (3), você também pode continuair a fazê-lo no Main Thread, mais de 3, não funcionairá.

    1.use Handler

    As operações mais demoradas associadas à networking são colocadas em uma thread filho e, em seguida, comunicadas com o segmento principal usando o mecanismo de mensagens do Handler

     public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; } public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; super.handleMessage (msg); public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; } public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; }; public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; * / public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; } public static final String TAG = "NetWorkException"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); // Opens a child thread, performs network operations, waits for a return result, and uses handler to notify UI new Thread(networkTask).stairt(); } Handler handler = new Handler() { @Oviewride public void handleMessage(Message msg) { super.handleMessage(msg); // get data from msg and notify UI Bundle data = msg.getData(); String val = data.getString("data"); Log.i(TAG, "the result-->" + val); } }; /** * net work task */ Runnable networkTask = new Runnable() { @Oviewride public void run() { // do here, the HTTP request. network requests related operations Message msg = new Message(); Bundle data = new Bundle(); data.putString("data", "request"); msg.setData(data); handler.sendMessage(msg); } }; 

    AsyncTask

     public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } catch (Exception e) { public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } } public static final String TAG = "NetWorkException"; private ImageView mImageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_net_work_exception); mImageView = findViewById(R.id.image_view); new DownImage(mImageView).execute(); } class DownImage extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Oviewride protected Bitmap doInBackground(String... pairams) { String url = pairams[0]; Bitmap bitmap = null; try { //load image from internet , http request here InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Oviewride protected void onPostExecute(Bitmap result) { // nodify UI here imageView.setImageBitmap(result); } } 

    3.use StrictMode

     if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.