마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 에러 문제 java.util.concurrent.RejectedExecutionException

0 추천

AsyncTask가 일종의 쓰레드 역할을 하는 것으로 알고 있습니다.

근데, 그 쓰레드가 많아지면서 오류가 나는 것 같습니다.

정확한 증상은 로그캣과 코드로 말씀드리겠습니다.

 

ImageView ib = (ImageView) v.findViewById(R.id.IMGORDER);

                  fileUrl = o.getCOrderUrl();

                  //fileUrl = GlobalVariables.CUSTOM_COMMON_SVR + o.getCOrderUrl();

                  Log.i("MyOrderListNo","fileUrl:"+fileUrl);

                  ImageTask task = new ImageTask(ib);

                  task.execute(fileUrl); //<--여기서 에러가 납니다.

 

 


 

일월 (510 포인트) 님이 2013년 5월 31일 질문
public class ImageTask extends AsyncTask<String, Integer, Drawable> {

      private ImageView view;

      public ImageTask(ImageView v) {
          view = v;
      }
     
      public Drawable downloadImage(String uri) {
          URL url = null;
          try {
              url = new URL(uri);
              java.io.InputStream is = url.openStream();
             
             
              BitmapFactory.Options options = new BitmapFactory.Options();
              options.inSampleSize = 2;

             
              FlushedInputStream flushedInputStream = new FlushedInputStream(is);
              Bitmap bm = BitmapFactory.decodeStream(flushedInputStream, null, options);
 
         Drawable draw = new BitmapDrawable(bm);
              is.close();
              return draw;
          } catch (MalformedURLException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
            } catch (Exception e) {
             e.printStackTrace();
            }
          return null;
      }
     
      public Drawable loadImage(String path) {
          try {
              FileInputStream is = new FileInputStream(path);
              Drawable draw = Drawable.createFromStream(is, "");
              is.close();
              return draw;
          } catch (MalformedURLException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
            } catch (Exception e) {
             e.printStackTrace();
            }
          return null;
      }


      protected Drawable doInBackground(String... uri) {
          String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
          Pattern patt = Pattern.compile(regex);
          Matcher matcher = patt.matcher(uri[0]);

          if (matcher.matches()) {
              return downloadImage(uri[0]);
          } else {
              return loadImage(uri[0]);
          }
      }
     

      protected void onPostExecute(Drawable draw) {
          view.setImageDrawable(draw);
      }
  }
   static class FlushedInputStream extends FilterInputStream {   
    public FlushedInputStream(java.io.InputStream is) {       
    
     super(is);   
    }   
   
    @Override   
    public long skip(long nc2) throws IOException {       
     long totalBytesSkipped = 0L;      
     
     while (totalBytesSkipped < nc2) {           
     
      long bytesSkipped = in.skip(nc2 - totalBytesSkipped);           
      if (bytesSkipped == 0L) {                 
        int nbyte = read();                 
       
        if (nbyte < 0) {                    
         break;  // we reached EOF                 
        } else {                     
        bytesSkipped = 1; // we read one byte                 
        }          
      }           
      totalBytesSkipped += bytesSkipped;       
     }       
     return totalBytesSkipped;   
    
    }

   }
로그캣
05-31 17:55:36.732: E/AndroidRuntime(1236): FATAL EXCEPTION: main
05-31 17:55:36.732: E/AndroidRuntime(1236): java.util.concurrent.RejectedExecutionException
05-31 17:55:36.732: E/AndroidRuntime(1236):     at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1876)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:774)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1295)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.os.AsyncTask.execute(AsyncTask.java:394)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at com.unsys.smartflower.MyOrderListNoActivity$OrderlistAdapter.getView(MyOrderListNoActivity.java:382)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.AbsListView.obtainView(AbsListView.java:1294)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.ListView.onMeasure(ListView.java:1109)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:696)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:306)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:521)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:521)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.View.measure(View.java:8171)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.os.Looper.loop(Looper.java:123)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at java.lang.reflect.Method.invokeNative(Native Method)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at java.lang.reflect.Method.invoke(Method.java:521)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-31 17:55:36.732: E/AndroidRuntime(1236):     at dalvik.system.NativeStart.main(Native Method)
05-31 17:55:37.041: W/dalvikvm(1236): JNI: pin count on array 0x4a1acab8 ([B) is now 46
05-31 17:55:37.041: W/dalvikvm(1236): JNI: pin count on array 0x4a1acab8 ([B) is now 46
05-31 17:55:37.052: W/dalvikvm(1236): JNI: pin count on array 0x4a1acab8 ([B) is now 46
05-31 17:55:37.141: W/dalvikvm(1236): JNI: pin count on array 0x4a1acab8 ([B) is now 46
05-31 17:55:37.141: W/dalvikvm(1236): JNI: pin count on array 0x4a1acab8 ([B) is now 45

1개의 답변

0 추천

http://www.sjava.net/299

 

1편 2편 읽어보세요

건방진프로그래머 (26,630 포인트) 님이 2013년 5월 31일 답변
...