Logo ms.removalsclassifieds.com

Bagaimana untuk membetulkan android.os.NetworkOnMainThreadException?

Anonim

Dengan menggunakan AsyncTask (disyorkan)

import androidx.appcompat.app.AppCompatActivity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; kelas awam MainActivity memanjangkan AppCompatActivity { TextView textLoad, textMessage; String strMessage akhir = "https://sites.google.com/site/androidersite/text.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textLoad = findViewById(R.id.textLoad); textMessage = findViewById(R.id.textMessage); textLoad.setText(“Memuatkan…”); MyTask() baharu.execute(); } kelas persendirian MyTask memanjangkan hasil AsyncTask{ String; @Override dilindungi Void doInBackground(Void… voids) { URL URL; cuba { url = URL baharu(strMessage); BufferedReader bufferedReader = BufferedReader baharu(InputStreamReader baharu(url.openStream())); String stringBuffer; Rentetan rentetan = “”; manakala ((stringBuffer = bufferedReader.readLine()) != null){ string = String.format(“%s%s”, string, stringBuffer); } bufferedReader.close(); hasil = rentetan; } tangkapan (IOException e){ e.printStackTrace(); hasil = e.toString(); } kembalikan nol; } @Override protected void onPostExecute(Void aVoid) { textMessage.setText(result); textLoad.setText("Selesai"); super.onPostExecute(aVoid); } } }

Lumpuhkan Mod Ketat (Tidak disyorkan)

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

Bagaimana untuk membetulkan android.os.NetworkOnMainThreadException?