Làm cách nào để sửa lỗi Android Os.NetworkOnMainThreadException?

Bằng cách sử dụng AsyncTask (được khuyến nghị)

nhập androidx.appcompat.app.AppCompatActivity; nhập android.os.AsyncTask; nhập android.os.Bundle; nhập android.widget.TextView; nhập java.io.BufferedReader; nhập java.io.IOException; nhập java.io.InputStreamReader; nhập java.net.URL; lớp công khai MainActivity mở rộng AppCompatActivity { TextView textLoad, textMessage; Chuỗi cuối cùng strMessage = “https://sites.google.com/site/androidersite/text.txt”; @Override protected void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textLoad = findViewById(R.id.textLoad); textMessage = findViewById(R.id.textMessage); textLoad.setText(“Đang tải…”); MyTask mới().execute(); } lớp riêng MyTask mở rộng AsyncTask{ Kết quả chuỗi; @Override protected Void doInBackground(Void… voids) { URL url; thử { url = URL mới(strMessage); BufferedReader bufferedReader = new BufferedReader(InputStreamReader mới(url.openStream())); Chuỗi stringBuffer; Chuỗi chuỗi = “”; while ((stringBuffer = bufferedReader.readLine()) != null){ string = String.format(“%s%s”, string, stringBuffer); } bufferedReader.close(); kết quả = chuỗi; } bắt (IOException e){ e.printStackTrace(); kết quả = e.toString(); } trả về giá trị rỗng; } @Override protected void onPostExecute(Void aVoid) { textMessage.setText(result); textLoad.setText(“Hoàn thành”); super.onPostExecute(aVoid); } } }

Tắt Chế độ nghiêm ngặt (Không được khuyến nghị)

nếuAndroid.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy điều luật = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(chính sách); }

Một yêu cầu?

Tôi đã nỗ lực rất nhiều để viết bài đăng trên blog này nhằm cung cấp giá trị cho bạn. Nó sẽ rất hữu ích cho tôi, nếu bạn cân nhắc chia sẻ nó trên mạng xã hội hoặc với bạn bè/gia đình của bạn. CHIA SẺ LÀ ♥️

Bạn muốn lưu bài viết này cho sau này? Nhấp vào trái tim ở góc dưới cùng bên phải để lưu vào hộp bài viết của riêng bạn!

về tác giả

Chara Yadav có bằng MBA về Tài chính. Mục tiêu của cô là đơn giản hóa các chủ đề liên quan đến tài chính. Cô đã làm việc trong lĩnh vực tài chính khoảng 25 năm. Cô đã tổ chức nhiều lớp học về tài chính và ngân hàng cho các trường kinh doanh và cộng đồng. Đọc thêm tại cô ấy trang sinh học.