이 문제를 도저히 해결을 못 하겠습니다.

 

A 액티비티에서 버튼 클릭시 B 액티비티를 호출하고,

B 액티비티는 웹DB에서 select 쿼리를 통해서 텍스트와, 이미지를 가져와서 보여주도록 되어 있습니다.

AsyncTask를 아래와 같이 사용했습니다.

 

저는 저 이미지 출력부를 AsyncTask 사이에 넣고 프로그래스 다이얼로그를 했기에, 액티비티가 호출된 후

이미지를 받아서 그리는 동안 프로그래스 다이얼로그를 띄우려고 하는데, 

이렇게 했을경우, B 액티비티가 호출되고 난 후 한참을 까만 화면이 나오고 그제서야 로딩중이라는

프로그래스 다이얼로그가 호출되면서 페이지가 열립니다.

 

 Handler handler = new Handler();  
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main_detail);


     getImageView();    //해당 게시물 이미지 출력
     getDataView();     //해당 게시물 텍스트 출력 
     btnSetup();            //버튼 이벤트 설정 
 }

 public void getImageView() {
  new AsyncTask<Void, Void, Void>( ) {
   protected void onPreExecute() {
         dialog = ProgressDialog.show(this, "","로딩중입니다.", true, true);
   };
     
   @Override
   protected Void doInBackground(Void... params) {
      handler.post(new Runnable( ) {
        @Override
        public void run() {
          loadImg();          //실제 이미지 출력
        }
      });
      return null;
   }
     
   @Override
   protected void onPostExecute(Void result) {
      super.onPostExecute(result);
      dialog.dismiss();
   }
  }.execute();
 } 

 

웹에서 이미지 경로를 가져와서 이미지를 보여주는 부분은 아래와 같이 구현했습니다.

 public void loadImg() {
   Img = (ImageView) findViewById(R.id.detail_img);
   Uri uri = Uri.parse(hm.get("detail_img[0]"));   //웹 이미지 경로url

   try {
     if (hmImg.get("detail_img[0]") == null) {   //메모리에 출력할 이미지가 없을때만 웹서버에 요청
       String urlstr = Image_url + hm.get("detail_img[0]");
       URL url = new URL("urlstr);
       URLConnection conn = url.openConnection();
       conn.connect();
       BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
       Bitmap bm = BitmapFactory.decodeStream(bis);
       bis.close();
       Img.setImageBitmap(bm);   

     }
   } catch (Exception e) {
       Log.e(TAG, e.toString());

 }

 

로그캣에 로그를 출력해보면,

loadImg() 부분이 너무 오래걸려서 까만 화면이 나오게 되는것 같습니다. 그러니 onResume()자체가 늦게 떠버려서

프로그래스 다이얼로그 자체가 안그려지는 것 아닌가 하는데요...

 

12-05 23:37:46.055: INFO/DetailView(6770): onCreate()
12-05 23:37:46.070: INFO/DetailView(6770): onPreExecute()
12-05 23:37:46.510: INFO/DetailView(6770): getDataView()
12-05 23:37:46.545: INFO/DetailView(6770): onStart()
12-05 23:37:46.545: INFO/DetailView(6770): onResume()          //여기에서
12-05 23:37:49.925: INFO/DetailView(6770): loadImg()              //여기가 시간차가 벌어짐
12-05 23:37:49.925: INFO/DetailView(6770): ondoInBackgroud() / loadImg() 호출
12-05 23:37:49.930: INFO/DetailView(6770): onPostExecute()


어떻게 해야 정보를 출력하게 되는 B 액티비티에서 제대로 로딩중 프로그래서 다이얼로그를 띄우면서

텍스트와 이미지 정보를 보여줄 수 있을까요??? 꼭 좀 도와주세요...