gpt4 book ai didi

java - AsyncTask 中的 android.os.NetworkOnMainThreadException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:52 25 4
gpt4 key购买 nike

我意识到当您尝试在 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);
}
}
}

任何人都可以在这里看到任何明显的问题吗?除了在主线程中执行 http 请求之外,是否可以出于任何其他原因抛出 NetworkOnMainThreadException 异常?

我是 Android 的新手,才接触它几天。

最佳答案

but as you can see in the code below I am actually calling the Http Get in an AsyncTask

实际上,你不是。您需要调用 execute() 而不是直接调用 doInBackground(),否则您不会使用 AsyncTask 提供的任何管道,而您只是直接在 UI 线程中调用该方法。

关于java - AsyncTask 中的 android.os.NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com