[Android 03] NetworkOnMainThreadException


  1. Network Exception trên Main Thread
Dựa trên tài liệu của Android có ghi rõ về vấn đề NetworkExceptionOnMainThread, như sau: 
The exception that is thrown when an application attempts to perform a networking operation on its main thread. This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged.
 Xem xét ví dụ như dưới đây:

Sử dụng UriBuilder để khởi tạo các attributes bao gồm scheme, authority.
Dùng HttpURLConnection để tạo kết nối đi kèm BufferReader với phương thức GET.
Giải phóng object trong khối finally, bao gồm httpUrlConnection và bufferedReader.
Khi compile, ta nhận được lỗi như sau:

      2. Xử lý lỗi

Android Studio ném cho chúng ta 1 khối đỏ chóe vào mặt, đó là NetworkOnMainThreadException, tức là bị lỗi ngoại lệ khi sử dụng và trình diễn các tiến trình liên quan mạng mẽo trên main thread. Nó xảy ra trên HoneyComb (Android 3.0v trở lên).

Để đi đường an toàn và không gặp ổ gà như trên, cách duy nhất phải đặt chúng trong một tiến trình background, sử dụng AsyncTask là một giải pháp an toàn, sẽ hoạt động trên worker thread riêng.
Done. Exception resolved.
Happy coding!

Nhận xét

Bài đăng phổ biến từ blog này

[Android-02] LayoutParams trong Android