Cara mengatasi android.os. NetworkOnMainThreadException

Tutorial tentang masalah ini sudah banyak sekali di internet, alasan saya menulisnya kembali adalah sebagai catatan dalam belajar saya dan mengingat kembali. Oh iya, tulisan ini juga merupakan catatan pertama saya tentang Android ­čÖé selama menggeluti dunia pemrograman mobile.

Baik, masalah ini terjadi hanya pada Android 3.0 (Honeycomb) dan versi keatasnya hal tersebut disebabkan karena jaringan diakses melalui antarmuka pengguna (user interface thread).

android.os.NetworkOnMainThreadException
Kredit: Tech Advisor

Misalnya pada kode berikut bila dijalankan pada Honeycomb dan keatasnya akan mengakibatkan kesalahan NetworkOnMainThreadException:

Mengatasi Android NetworkOnMainThreadException

Untuk mengatasinya cukup mudah tinggal menambahkan StrictMode sehingga menjadi kode berikut:

Tetapi cara di atas tidak direkomendasikan, cara yang lebih direkomendasikan adalah dengan menggunakan class AsyncTask sebagai berikut:

Selanjutnya untuk memanggilnya tinggal buat kode new Connection().execute();.

Catatan Akhir:

Jika masih ada yang belum dimengerti mengenai tulisan di atas, silahkan tanya di bagian komentar di bawah ya. Supaya mendapat notifikasi jika jawabannya dibalas silahkan centang pilihan "Beri tahu saya komentar baru melalui email" sebelum mengirim komentar.

Catatan Belajar juga hadir di Facebook, dukung tulisan kami dengan klik tombol suka ini ya:

Sekian, semoga tulisan dengan judul Cara mengatasi android.os. NetworkOnMainThreadException ini bermanfaat bagi kita semua.

Salam penulis, Ivo Idham Perdameian

3 thoughts on “Cara mengatasi android.os. NetworkOnMainThreadException

Add yours

  1. om, jika untuk mengirim data dari mainthread via httppost ke server menggunakan class async terus responnya mau diteruskan ke mainthread lagi. gimana itu om?

    1. Buat interface class:

      Di class async jangan lupa mendeklarasikan interface yang udah dibuat tadi:

      Langkah terakhir adalah meng-implements interface tadi ke activity, misal:

  2. mas koq ada pesan

    “Cannot reduce the visibility of the inherited method from AsyncTask” di private Void doInBackground(Void…params)

Tinggalkan Balasan

© 2017 oleh Catatan Belajar | Theme: Baskerville 2 by Anders Noren.

Up ↑