簡體   English   中英

Android中的NetworkOnMainThreadException

[英]NetworkOnMainThreadException in android

我想在其他班級進行網絡操作。 我已經在MainActivity創建了一個Runnable ,但是出現了NetworkOnMainThreadException異常

我的問題是Runnable不會從UI線程創建另一個線程嗎? 我是Android開發的新手。

MainActivity.java

 //Inside MainActivity Class
//.....
Runnable initStack = new Runnable(){
   @Override 
   public void run(){
      otherClassObject.itsMethod();
      handler.post(new Runnable(){
             //back to UI thread.... 
    });
  }
}

我的問題是Runnable不會從UI線程創建另一個線程嗎?

第一個Runnable不是Thread 如果需要Thread ,請使用Thread ,或使用其他使用Thread東西(例如AsyncTask )。

您需要創建一個新線程,而不僅僅是一個可運行線程。 而不是調用initStack.run() ,請執行以下操作: new Thread(initStack).start();

可能的重復: Runnable上的NetworkOnMainThreadException

根據Java文檔,“應該由實例打算由線程執行的任何類實現”。

簡而言之,Android對主線程上與網絡相關的線程的處理進行了一些更改。 這是由AsyncTask完成的。

在此處閱讀有關內容: http : //developer.android.com/reference/android/os/AsyncTask.html

同樣,如果您對Android編程的基本知識和一些教程有所了解,然后再進行實際的編碼,那會更好。

將您的代碼更改為。 可運行是不創建線程。 Runnable是簡單的三行界面。

new Thread() {
            @Override
           public void run() {
               //your code here
           }
       }.start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM