안드로이드 페이스북 프로필 사진 가져오려는데 오류가 발생합니다.


             try{
                   URL image_value = new URL("https://graph.facebook.com/"+id+ "/picture?type=large");
                   Log.i(getPackageName(),"url : "+image_value);
                   Bitmap bmp = null;
                   //오류발생 bmp = BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
                   Log.i(getPackageName(),"bitmap : "+bmp);
                   String temp = BitMapToString(bmp);
                   PreferencesUtil.setPreferences(getApplicationContext(),"profile",temp);
               } catch (IOException e){
                   Log.e("Err : ","image download err: "+e.getMessage());
                   e.printStackTrace();
               }

LOGCAT

W/System.err: android.os.NetworkOnMainThreadException

W/System.err: at com.example.cracking.fb_processes.MainActivity$2$override.onCompleted(MainActivity.java:107)

왜 이코드에서 에러가 발생할까요..?? 해결방법좀 알려주시면 감사하겠습니다


  • Android Network는 mainThread에서 처리해주시면 안됩니다. new Thread를 이용해서 처리하시고, new Handler로 처리해서 UI갱신을 해주시면 됩니다.    Taehwan Kwon   2016.8.26 11:56     
조회수 152


1 답변


허니콤 이후부터 정책적으로 UI 스레드에서 네트워크 요청 시 NetworkOnMainThreadException을 발생시킵니다. 따라서 네트워크를 통해 이미지를 요청하는 부분은 반드시 별도의 스레드에서 처리해야 됩니다.

코드를 수정하는 간단한 방법 중 하나는 AsyncTask를 사용해서 이미지 요청을 백그라운드 스레드에서 요청하고, 결과(비트맵)를 UI 스레드로 전달하는 방법을 사용해보시기 바랍니다. 아래 링크를 참고하셔서 AsyncTask를 사용하도록 코드를 수정해보세요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close