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); }
Jadi apakah strict mode dalam android itu harus diaktifkan atau tidak pak?
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