[英]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.