2012-10-16 1 views
0

내 앱에서 특정 활동이 호출되었을 때 URL에서 이미지를 보여줍니다. URL에서 이미지가 느리게로드되는 바와 같이, 내가 안드로이드 - 진행 대화 상자가 나타나지 않습니다.

다음

가 진행 대화 beofr의 이미지를 표시하려면 코드입니다, 여기에 대화 진행을 보여주기 위해 시도하고

class ShowImageTagList extends AsyncTask<Void, Void, Void> 
{ 
    ProgressDialog dialog = new ProgressDialog(UploadPhoto.this); 
    protected void onPreExecute() 
    { 
      Log.e("preexcute ","called"); 
      this.dialog.setMessage(" Loading ..."); 
      this.dialog.setCancelable(false); 
      this.dialog.show(); 
    } 

    protected Void doInBackground(Void... args) 
    { 
     try 
     { 
      JSONObject json = new JSONObject(Appconstants.photo_details); 
      JSONArray photoperson = json.getJSONArray("photopersons"); 
      Log.e("photoperson ","value @ photoperson "+photoperson); 
      for(int j=0; j < photoperson.length(); j++) 
      { 
       id.add(photoperson.getJSONObject(j).getString("pid").toString()); 
       names.add(photoperson.getJSONObject(j).getString("name").toString()); 
      } 
     } 
     catch(Exception e) 
     { 
      Log.e("Eception caught", ""+e); 
     } 
     return null ;  
     } 

     protected void onPostExecute(Void unused) 
     { 
      Log.e("post execute ","called"); 
      Bitmap bm = getBitmapFromURL(Appconstants.image_url.get(Appconstants.img_i)); 
      img_to_upload.setImageBitmap(bm); 
      list_tag.setAdapter(new ListviewAdapter(UploadPhoto.this, names, id)); 
      dialog.dismiss(); 
     } 
} 

public static Bitmap getBitmapFromURL(String src) 
{ 
    try 
    { 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     return myBitmap; 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
     Log.e("Exception",e.getMessage()); 
     return null; 
    } 

}

진행 대화 상자가 나타납니다 즉각 나타나지 않으면 이미지가 나타나기 전에 마이크로 초 동안 나타납니다. 그러나 실행 전 로그와 백그라운드 로그는 즉시 인쇄됩니다. asyn 작업이 호출 된 때 긴 주요이기 때문에,

방법

답변

4

이동 Bitmap bm = getBitmapFromURL(Appconstants.image_url.get(Appconstants.img_i));

doInBackground

에서 ..... 선두에서 실행 진행 상황을 만들기 위해 방법. 어느 전화 번호 onPostExecute.

onPostExecute 메인 UI 스레드에서 실행됩니다.