我創建Android應用程序,並使用JSON
從服務器獲取數據,但我得到了下面的錯誤顯示:
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
我怎麼能解決這個問題
謝謝
我創建Android應用程序,並使用JSON
從服務器獲取數據,但我得到了下面的錯誤顯示:
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
我怎麼能解決這個問題
謝謝
你必須插入2行 「StrictMode」 在MainActivity類別,例如是下面:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
// JSON here
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.activity_main);
Intent intent=new Intent(this,HomeActivity.class);
startActivity(intent);
}
}
Aey.Sakon
謝謝,你救了一天:) –
更好使用AsyncTask
作爲提及here,替代剛剛擺脫Exception
是使用:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
或本:
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
//Your code goes here
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
});
thread.start();
在您的活動,其中
Exception
發生
。
只需添加兩行後創建方法
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
見我回答下面的問題,希望能工作! –
此例外的原因; http://stackoverflow.com/a/6986726/1528483 – Jorge