UI iş parçacığı üzerinde bir tür ağ isteği yapmaya çalıştığınızda bu hatanın gerçekleştiğini fark ediyorum, ancak aşağıdaki kodda gördüğünüz gibi aslında Http Get'i bir AsyncTask'ta arıyorum :android.os.NetworkOnMainThreadException AsyncTask
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);
}
}
}
Burada herhangi bir bariz sorun görülebilir mi? Ayrıca, ana iş parçacığında bir http isteği yapmaktan başka bir nedenle NetworkOnMainThreadException
istisnası atılabilir mi?
Android için yeni bir kullanıcıyım, sadece birkaç gün çalışıyorum.
Aha teşekkür ederim arkadaşım! – jcvandan
Birkaç kez bunu aştım ve iş parçacığı ile birkaç kez daha yapmaya başladım (Start vs run). Bu işe yaramazsa, neden 'doInBackground()' niçin kullanılabilir? –
Uh ... "uygun" derken ne demek istiyorsun? Her şeyden önce, 'korumalı', yani AsyncTask'ın dışındaki bir sınıftan çağırmanız gerekmiyor. Ne yazık ki, pek çok kişi AsyncTasks'i satır içi olarak ilan ediyorlar, böylece doInBackground() işlevini çağırıyorlar. execute() 'ancak * * publicdir. – dmon