0
我想一個簡單的例子:http://www.vogella.com/articles/AndroidJSON/article.html的Android網址提取和樣品分析 - 錯誤
但得到一個錯誤..誰能告訴我,爲什麼我得到這個錯誤:http://puu.sh/1mGz1
我想一個簡單的例子:http://www.vogella.com/articles/AndroidJSON/article.html的Android網址提取和樣品分析 - 錯誤
但得到一個錯誤..誰能告訴我,爲什麼我得到這個錯誤:http://puu.sh/1mGz1
使用AsyncTask從UI線程使得服務器請求,從而改變你的代碼:
///Your code...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new LongOperation().execute("");
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//call readtwitterFeed() method here
String readtwitterFeed=readtwitterFeed();
return readtwitterFeed;
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray jsonArray = new JSONArray(result);
Log.i(ParseJSON.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
您正在嘗試在主線程上發出數據請求。使用AsyncTask來做到這一點。
或者在onCreate()方法中添加這2行來繞過它。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
我推薦使用asynctask。
檢查Vogella的博客[** ** NetworkOnMainThreadException(http://www.vogella.com/blog/2012/02/22/android-strictmode-networkonmainthreadexception /)或在這裏檢查Stackoverflow本身:http://stackoverflow.com/search?q=Android+NetworkOnMainThreadException –