Logo ar.removalsclassifieds.com

كيفية إصلاح android.os.NetworkOnMainThreadException؟

Anonim

باستخدام AsyncTask (مستحسن)

استيراد androidx.appcompat.app.AppCompatActivity ؛ استيراد android.os.AsyncTask ؛ استيراد android.os.Bundle ؛ استيراد android.widget.TextView ؛ استيراد java.io.BufferedReader ؛ استيراد java.io.IOException ؛ استيراد java.io.InputStreamReader ؛ استيراد java.net.URL ؛ يمتد MainActivity للفئة العامة AppCompatActivity {TextView textLoad، textMessage؛ نهائي String strMessage = “https://sites.google.com/site/androidersite/text.txt” ؛ Override protected void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState) ؛ setContentView (R.layout.activity_main) ؛ textLoad = findViewById (R.id.textLoad) ، textMessage = findViewById (R.id.textMessage) ؛ textLoad.setText (“جارٍ التحميل…”) ؛ new MyTask (). execute ()؛ } فئة خاصة MyTask توسع AsyncTask {String result؛ Override المحمي Void doInBackground (Void… voids) {URL url؛ جرب {url = URL جديد (strMessage) ؛ BufferedReader bufferedReader = جديد BufferedReader (new InputStreamReader (url.openStream ()))؛ سلسلة سلسلة سلسلة String = "" ؛ while ((stringBuffer = bufferedReader.readLine ())! = فارغ) {string = String.format (“٪ s٪ s”، string، stringBuffer)؛ } bufferedReader.close ()؛ النتيجة = سلسلة ؛ } catch (IOException e) {e.printStackTrace ()؛ النتيجة = e.toString () ، } عودة خالية؛ }Override protected void onPostExecute (Void aVoid) {textMessage.setText (نتيجة) ؛ textLoad.setText ("انتهى") ؛ super.onPostExecute (aVoid) ؛ }}}

تعطيل الوضع الصارم (غير مستحسن)

if (android.os.Build.VERSION.SDK_INT> 9) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder (). allowAll (). build ()؛ StrictMode.setThreadPolicy (سياسة) ، }

كيفية إصلاح android.os.NetworkOnMainThreadException؟