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;
    }

}

進行状況ダイアログはすぐには表示されません。画像が表示されるまでにマイクロ秒かかりますが、事前実行のログとバックグラウンドでの実行はすぐに印刷されます。非同期タスクが呼び出されたとき、

最初から実行するための進行方法.....

4

1 に答える 1

4

入居 Bitmap bm = getBitmapFromURL(Appconstants.image_url.get(Appconstants.img_i)); する

doInBackground

それは主要な長いプロセスです。あなたが呼び出しているものonPostExecute

onPostExecuteメイン UI スレッドで実行します。

于 2012-10-16T18:25:31.077 に答える