Berbagi tips mungkin bagi yang sedang mengembangkan aplikasi android dengan fitur networking / terhubung dengan internet. Mungkin akan mengalami error dengan pesan seperti ini

 fatal exception android.os.networkOnMainThreadException

Berdasarkan informasi yang saya dapatkan bahwa error ini biasanya terjadi pada android versi 3.0 (honeycomb) ke atas. Pada aplikasi/activity yang memiliki user interface, disarankan untuk menghindari adanya komunikasi yang terus-menerus ke network/file.

Karena itu pada android versi 3.0 memiliki fitur StrictMode. StrictMode akan mengatur kebijakan agar activity tidak melakukan proses yang tidak perlu di background. Sehingga jika anda memiliki aplikasi/activity yang tidak menyertakan StrictMode, maka error seperti diatas akan muncul.

Hal ini sebenarnya dapat diatasi dengan mengganti target min sdk menjadi turun, misal 7. Ketika dicompile ulang, maka aplikasi anda berjalan sebagaimana semestinya. Namun caranya ini tidak disarankan oleh developer yang sudah berpengalaman.

Caranya dengan menambahkan

if (android.os.Build.VERSION.SDK_INT > 9) {
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
      StrictMode.setThreadPolicy(policy);
}

Tulisan Lain   Membuat dan Print Dokumen di Flutter

By alfach

2 thoughts on “[Solved] Android Networking Problem fatal exception network On Main Thread Exception”
    1. Strict mode itu pada network mulai digunakan pada android diatas versi 3.0. Salah satunya tidak diperbolehkan melakukan komunikasi network secara langsung. Fungsinya untuk performansi dan security. Untuk menghindari strict mode itu bisa dgn menggunakan script diatas, hanya saja konsekuensinya pada performansi dan security, walau mgkn tdk terlalu signifikan kalau dilihat.

      Atau jika ingin tetap ada strict mode, maka mekanisme coding network harus diubah, yaitu komunikasi network melalui background.

      Pilihannya jadi tergantung programmer

Leave a Reply

Your email address will not be published. Required fields are marked *