Mengatasi android.os.NetworkOnMainThreadException exception

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).

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

Untuk mengatasi 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();.

Oke sekian dulu ya catatan belajar kali ini, kalau masih belum mengerti silahkan tanya di bagian komentar di bawah. Supaya mendapat notifikasi jika jawabannya dibalas silahkan centang pilihan Beritahu saya balasan komentar lewat surat elektronik sebelum mengirim komentar. Semoga bermanfaat buat sahabat CB (Catatan Belajar) dan jangan lupa berikan juga +1 Google sahabat di tulisan ini

Catatan Belajar juga hadir di Facebook, like kami ya klik tombol berikut:

 
Signature :

No copy paste content please…. If you want do that, please include the live link to original source. Original Post by catatanbelajar.com, written by , .

3 thoughts on “Mengatasi android.os.NetworkOnMainThreadException exception”

  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