我意识到当你试图在UI线程上进行某种网络请求时会出现这个错误,但是正如下面的代码所示,实际上我是在AsyncTask中调用Http Get:
public class LeftPaneFragment extends Fragment {
private ImageView _profileImage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(wj.tweetTab.R.layout.left_pane, container);
_profileImage = (ImageView) view.findViewById(R.id.profileImage);
setUpProfileInfo(view);
return view;
}
private void setUpProfileInfo(View view) {
new SetUpUserInfo().doInBackground();
}
private class SetUpUserInfo extends AsyncTask<Void, Void, Drawable> {
@Override
protected Drawable doInBackground(Void... params) {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(_model.UserInfo.ProfileImageUrl);
InputStream inputStream = null;
try {
HttpResponse response = httpClient.execute(request);
inputStream = response.getEntity().getContent();
}
catch (Exception e) {
Log.e("setUpUserInfo.doInBackground", e.getMessage());
}
return Drawable.createFromStream(inputStream, "src");
}
@Override
protected void onPostExecute(Drawable result) {
_profileImage.setImageDrawable(result);
}
}
}
这里有明显的问题吗?另外,NetworkOnMainThreadException
异常除了在主线程中执行http请求之外,还会因为其他原因而抛出吗?
我是一个Android新手,只接触了几天。
doInBackground()
会被提供出来,而它又如此无用呢? - user1499731