Android 图像下载程序类的枚举声明有错误

Android 图像下载程序类的枚举声明有错误,android,image,enums,download,Android,Image,Enums,Download,您好,我已经编写了以下代码将图像下载到我的应用程序中 public class ImageDownloader { private static final int DELAY_BEFORE_PURGE = 10000; private static final int HARD_CACHE_CAPACITY = 10; private static final String LOG_TAG = "ImageDownloader"; @SuppressWarnings("unch

您好,我已经编写了以下代码将图像下载到我的应用程序中

public class ImageDownloader
{
  private static final int DELAY_BEFORE_PURGE = 10000;
  private static final int HARD_CACHE_CAPACITY = 10;
  private static final String LOG_TAG = "ImageDownloader";
  @SuppressWarnings("unchecked")
private static final ConcurrentHashMap<String, SoftReference<Bitmap>> sSoftBitmapCache = new ConcurrentHashMap<String, SoftReference<Bitmap>>(5);
  private Mode1 mode = Mode1.CORRECT;
  private final Handler purgeHandler = new Handler();
  private final Runnable purger = new Runnable()
  {
    public void run()
    {
      ImageDownloader.this.clearCache();
    }
  };
  private final HashMap<String, Bitmap> sHardBitmapCache = new LinkedHashMap(5, 0.75F, true)
  {
    protected boolean removeEldestEntry(Map.Entry<String, Bitmap> paramAnonymousEntry)
    {
      if (size() > 10)
        ImageDownloader.sSoftBitmapCache.put((String)paramAnonymousEntry.getKey(), new SoftReference((Bitmap)paramAnonymousEntry.getValue()));
      for (boolean bool = true; ; bool = false)
        return bool;
    }
  };


private Bitmap localObject2;  private void addBitmapToCache(String paramString, Bitmap paramBitmap)
  {
    if (paramBitmap != null)
      synchronized (this.sHardBitmapCache)
      {
        this.sHardBitmapCache.put(paramString, paramBitmap);
      }
  }

  private static boolean cancelPotentialDownload(String paramString, ImageView paramImageView)
  {
    boolean bool = true;
    BitmapDownloaderTask localBitmapDownloaderTask = getBitmapDownloaderTask(paramImageView);
    if (localBitmapDownloaderTask != null)
    {
      String str = localBitmapDownloaderTask.url;
      if ((str != null) && (str.equals(paramString)))
        break label39;
      localBitmapDownloaderTask.cancel(bool);
    }
    while (true)
    {
      return bool;
      label39: bool = false;
    }
  }

  private void forceDownload(String paramString, ImageView paramImageView)
  {
    if (paramString == null)
      paramImageView.setImageDrawable(null);
    while (true)
    {
      return;
      if (cancelPotentialDownload(paramString, paramImageView))
        switch ($SWITCH_TABLE$org$fluturasymphony$recommendation$ImageDownloader$Mode()[this.mode.ordinal()])
        {
        default:
          break;
        case 1:
          Bitmap localBitmap = downloadBitmap(paramString);
          addBitmapToCache(paramString, localBitmap);
          paramImageView.setImageBitmap(localBitmap);
          break;
        case 2:
          paramImageView.setMinimumHeight(156);
          new BitmapDownloaderTask(paramImageView).execute(new String[] { paramString });
          break;
        case 3:
          BitmapDownloaderTask localBitmapDownloaderTask = new BitmapDownloaderTask(paramImageView);
          paramImageView.setImageDrawable(new DownloadedDrawable(localBitmapDownloaderTask));
          paramImageView.setMinimumHeight(156);
          localBitmapDownloaderTask.execute(new String[] { paramString });
        }
    }
  }

  private int[] $SWITCH_TABLE$org$fluturasymphony$recommendation$ImageDownloader$Mode() {
    // TODO Auto-generated method stub
    return null;
}

private static BitmapDownloaderTask getBitmapDownloaderTask(ImageView paramImageView)
  {
    Drawable localDrawable;
    if (paramImageView != null)
    {
      localDrawable = paramImageView.getDrawable();
      if (!(localDrawable instanceof DownloadedDrawable));
    }
    for (BitmapDownloaderTask localBitmapDownloaderTask = ((DownloadedDrawable)localDrawable).getBitmapDownloaderTask(); ; localBitmapDownloaderTask = null)
      return localBitmapDownloaderTask;
  }

  private Bitmap getBitmapFromCache(String paramString)
  {
    synchronized (this.sHardBitmapCache)
    {
      Bitmap localBitmap1 = (Bitmap)this.sHardBitmapCache.get(paramString);
      if (localBitmap1 != null)
      {
        this.sHardBitmapCache.remove(paramString);
        this.sHardBitmapCache.put(paramString, localBitmap1);
        localObject2 = localBitmap1;
      }
      else
      {
        SoftReference localSoftReference = (SoftReference)sSoftBitmapCache.get(paramString);
        if (localSoftReference != null)
        {
          Bitmap localBitmap2 = (Bitmap)localSoftReference.get();
          if (localBitmap2 != null)
            localObject2 = localBitmap2;
        }
      }
    }
    sSoftBitmapCache.remove(paramString);
    Object localObject2 = null;
    return (Bitmap) localObject2;
  }

  private void resetPurgeTimer()
  {
    this.purgeHandler.removeCallbacks(this.purger);
    this.purgeHandler.postDelayed(this.purger, 10000L);
  }

  public void clearCache()
  {
    this.sHardBitmapCache.clear();
    sSoftBitmapCache.clear();
  }

  public void download(String paramString, ImageView paramImageView)
  {
    resetPurgeTimer();
    Bitmap localBitmap = getBitmapFromCache(paramString);
    if (localBitmap == null)
      forceDownload(paramString, paramImageView);
    while (true)
    {
      return;
      cancelPotentialDownload(paramString, paramImageView);
      paramImageView.setImageBitmap(localBitmap);
    }
  }

  // ERROR //
  Bitmap downloadBitmap(String paramString)
  {
    // Byte code:
    //   0: aload_0
    //   1: getfield 65 org/fluturasymphony/recommendation/ImageDownloader:mode Lorg/fluturasymphony/recommendation/ImageDownloader$Mode;
    //   4: getstatic 48    org/fluturasymphony/recommendation/ImageDownloader$Mode:NO_ASYNC_TASK   Lorg/fluturasymphony/recommendation/ImageDownloader$Mode;
    //   7: if_acmpne +107 -> 114
    //   10: new 213    org/apache/http/impl/client/DefaultHttpClient
    //   13: dup
    //   14: invokespecial 214  org/apache/http/impl/client/DefaultHttpClient:<init>    ()V
    //   17: astore_2
    //   18: new 216    org/apache/http/client/methods/HttpGet
    //   21: dup
    //   22: aload_1
    //   23: invokespecial 219  org/apache/http/client/methods/HttpGet:<init>   (Ljava/lang/String;)V
    //   26: astore_3
    //   27: aload_2
    //   28: aload_3
    //   29: invokeinterface 224 2 0
    //   34: astore 15
    //   36: aload 15
    //   38: invokeinterface 230 1 0
    //   43: invokeinterface 235 1 0
    //   48: istore 16
    //   50: iload 16
    //   52: sipush 200
    //   55: if_icmpeq +69 -> 124
    //   58: ldc 15
    //   60: new 237    java/lang/StringBuilder
    //   63: dup
    //   64: ldc 239
    //   66: invokespecial 240  java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   69: iload 16
    //   71: invokevirtual 244  java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
    //   74: ldc 246
    //   76: invokevirtual 249  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   79: aload_1
    //   80: invokevirtual 249  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   83: invokevirtual 253  java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   86: invokestatic 259   android/util/Log:w  (Ljava/lang/String;Ljava/lang/String;)I
    //   89: pop
    //   90: aload_2
    //   91: instanceof 261
    //   94: istore 23
    //   96: aconst_null
    //   97: astore 8
    //   99: iload 23
    //   101: ifeq +10 -> 111
    //   104: aload_2
    //   105: checkcast 261 android/net/http/AndroidHttpClient
    //   108: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   111: aload 8
    //   113: areturn
    //   114: ldc_w 266
    //   117: invokestatic 270  android/net/http/AndroidHttpClient:newInstance  (Ljava/lang/String;)Landroid/net/http/AndroidHttpClient;
    //   120: astore_2
    //   121: goto -103 -> 18
    //   124: aload 15
    //   126: invokeinterface 274 1 0
    //   131: astore 17
    //   133: aload 17
    //   135: ifnull +280 -> 415
    //   138: aconst_null
    //   139: astore 19
    //   141: aload 17
    //   143: invokeinterface 280 1 0
    //   148: astore 19
    //   150: new 282   org/fluturasymphony/recommendation/ImageDownloader$FlushedInputStream
    //   153: dup
    //   154: aload 19
    //   156: invokespecial 285 org/fluturasymphony/recommendation/ImageDownloader$FlushedInputStream:<init>    (Ljava/io/InputStream;)V
    //   159: invokestatic 291  android/graphics/BitmapFactory:decodeStream (Ljava/io/InputStream;)Landroid/graphics/Bitmap;
    //   162: astore 21
    //   164: aload 19
    //   166: ifnull +8 -> 174
    //   169: aload 19
    //   171: invokevirtual 294 java/io/InputStream:close   ()V
    //   174: aload 17
    //   176: invokeinterface 297 1 0
    //   181: aload_2
    //   182: instanceof 261
    //   185: ifeq +10 -> 195
    //   188: aload_2
    //   189: checkcast 261 android/net/http/AndroidHttpClient
    //   192: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   195: aload 21
    //   197: astore 8
    //   199: goto -88 -> 111
    //   202: astore 20
    //   204: aload 19
    //   206: ifnull +8 -> 214
    //   209: aload 19
    //   211: invokevirtual 294 java/io/InputStream:close   ()V
    //   214: aload 17
    //   216: invokeinterface 297 1 0
    //   221: aload 20
    //   223: athrow
    //   224: astore 12
    //   226: aload_3
    //   227: invokevirtual 300 org/apache/http/client/methods/HttpGet:abort    ()V
    //   230: ldc 15
    //   232: new 237   java/lang/StringBuilder
    //   235: dup
    //   236: ldc_w 302
    //   239: invokespecial 240 java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   242: aload_1
    //   243: invokevirtual 249 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   246: invokevirtual 253 java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   249: aload 12
    //   251: invokestatic 305  android/util/Log:w  (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
    //   254: pop
    //   255: aload_2
    //   256: instanceof 261
    //   259: istore 14
    //   261: aconst_null
    //   262: astore 8
    //   264: iload 14
    //   266: ifeq -155 -> 111
    //   269: aload_2
    //   270: checkcast 261 android/net/http/AndroidHttpClient
    //   273: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   276: aconst_null
    //   277: astore 8
    //   279: goto -168 -> 111
    //   282: astore 9
    //   284: aload_3
    //   285: invokevirtual 300 org/apache/http/client/methods/HttpGet:abort    ()V
    //   288: ldc 15
    //   290: new 237   java/lang/StringBuilder
    //   293: dup
    //   294: ldc_w 307
    //   297: invokespecial 240 java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   300: aload_1
    //   301: invokevirtual 249 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   304: invokevirtual 253 java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   307: invokestatic 259  android/util/Log:w  (Ljava/lang/String;Ljava/lang/String;)I
    //   310: pop
    //   311: aload_2
    //   312: instanceof 261
    //   315: istore 11
    //   317: aconst_null
    //   318: astore 8
    //   320: iload 11
    //   322: ifeq -211 -> 111
    //   325: aload_2
    //   326: checkcast 261 android/net/http/AndroidHttpClient
    //   329: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   332: aconst_null
    //   333: astore 8
    //   335: goto -224 -> 111
    //   338: astore 5
    //   340: aload_3
    //   341: invokevirtual 300 org/apache/http/client/methods/HttpGet:abort    ()V
    //   344: ldc 15
    //   346: new 237   java/lang/StringBuilder
    //   349: dup
    //   350: ldc_w 309
    //   353: invokespecial 240 java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   356: aload_1
    //   357: invokevirtual 249 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   360: invokevirtual 253 java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   363: aload 5
    //   365: invokestatic 305  android/util/Log:w  (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
    //   368: pop
    //   369: aload_2
    //   370: instanceof 261
    //   373: istore 7
    //   375: aconst_null
    //   376: astore 8
    //   378: iload 7
    //   380: ifeq -269 -> 111
    //   383: aload_2
    //   384: checkcast 261 android/net/http/AndroidHttpClient
    //   387: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   390: aconst_null
    //   391: astore 8
    //   393: goto -282 -> 111
    //   396: astore 4
    //   398: aload_2
    //   399: instanceof 261
    //   402: ifeq +10 -> 412
    //   405: aload_2
    //   406: checkcast 261 android/net/http/AndroidHttpClient
    //   409: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   412: aload 4
    //   414: athrow
    //   415: aload_2
    //   416: instanceof 261
    //   419: istore 18
    //   421: aconst_null
    //   422: astore 8
    //   424: iload 18
    //   426: ifeq -315 -> 111
    //   429: aload_2
    //   430: checkcast 261 android/net/http/AndroidHttpClient
    //   433: invokevirtual 264 android/net/http/AndroidHttpClient:close    ()V
    //   436: aconst_null
    //   437: astore 8
    //   439: goto -328 -> 111
    //
    // Exception table:
    //   from   to  target  type
    //   141    164 202 finally
    //   27 90  224 java/io/IOException
    //   124    133 224 java/io/IOException
    //   169    181 224 java/io/IOException
    //   209    224 224 java/io/IOException
    //   27 90  282 java/lang/IllegalStateException
    //   124    133 282 java/lang/IllegalStateException
    //   169    181 282 java/lang/IllegalStateException
    //   209    224 282 java/lang/IllegalStateException
    //   27 90  338 java/lang/Exception
    //   124    133 338 java/lang/Exception
    //   169    181 338 java/lang/Exception
    //   209    224 338 java/lang/Exception
    //   27 90  396 finally
    //   124    133 396 finally
    //   169    181 396 finally
    //   209    224 396 finally
    //   226    255 396 finally
    //   284    311 396 finally
    //   340    369 396 finally
  }

  public void setMode(Mode1 paramMode)
  {
    this.mode = paramMode;
    clearCache();
  }

  class BitmapDownloaderTask extends AsyncTask<String, Void, Bitmap>
  {
    private final WeakReference<ImageView> imageViewReference;
    private String url;

    public BitmapDownloaderTask(ImageView arg2)
    {
      Object localObject;
      this.imageViewReference = new WeakReference(localObject);
    }

    protected Bitmap doInBackground(String[] paramArrayOfString)
    {
      this.url = paramArrayOfString[0];
      return ImageDownloader.this.downloadBitmap(this.url);
    }

    protected void onPostExecute(Bitmap paramBitmap)
    {
      if (isCancelled())
        paramBitmap = null;
      ImageDownloader.this.addBitmapToCache(this.url, paramBitmap);
      if (this.imageViewReference != null)
      {
        ImageView localImageView = (ImageView)this.imageViewReference.get();
        if ((this == ImageDownloader.getBitmapDownloaderTask(localImageView)) || (ImageDownloader.this.mode != ImageDownloader.Mode1.CORRECT))
          localImageView.setImageBitmap(paramBitmap);
      }
    }
  }

  static class DownloadedDrawable extends ColorDrawable
  {
    private final WeakReference<ImageDownloader.BitmapDownloaderTask> bitmapDownloaderTaskReference;

    public DownloadedDrawable(ImageDownloader.BitmapDownloaderTask paramBitmapDownloaderTask)
    {
      super();
      this.bitmapDownloaderTaskReference = new WeakReference<BitmapDownloaderTask>(paramBitmapDownloaderTask);
    }

    public ImageDownloader.BitmapDownloaderTask getBitmapDownloaderTask()
    {
      return (ImageDownloader.BitmapDownloaderTask)this.bitmapDownloaderTaskReference.get();
    }
  }

  static class FlushedInputStream extends FilterInputStream
  {
    public FlushedInputStream(InputStream paramInputStream)
    {
      super(paramInputStream);
    }

    public long skip(long paramLong)
      throws IOException
    {
      long l2;
      for (long l1 = 0L; ; l1 += l2)
      {
        if (l1 >= paramLong);
        do
        {
          return l1;
          l2 = this.in.skip(paramLong - l1);
          if (l2 != 0L)
            break;
        }
        while (read() < 0);
        l2 = 1L;
      }
    }
  }
  public static enum Mode1{

      CORRECT ( new Mode1("CORRECT", 2),
      Mode1[] arrayOfMode = new Mode1[3],
      arrayOfMode[0] = NO_ASYNC_TASK,
      arrayOfMode[1] = NO_DOWNLOADED_DRAWABLE,
      arrayOfMode[2] = CORRECT1);

  }

}
公共类ImageDownloader
{
清除前的专用静态最终整数延迟=10000;
专用静态最终int硬缓存容量=10;
私有静态最终字符串日志\u TAG=“ImageDownloader”;
@抑制警告(“未选中”)
私有静态最终ConcurrentHashMap sSoftBitmapCache=新ConcurrentHashMap(5);
专用模式1模式=模式1.CORRECT;
私有最终处理程序purgeHandler=新处理程序();
private final Runnable purger=新Runnable()
{
公开募捐
{
ImageDownloader.this.clearCache();
}
};
private final HashMap sHardBitmapCache=新LinkedHashMap(5,0.75F,真)
{
受保护的布尔RemoveedStentry(Map.Entry paramAnonymousEntry)
{
如果(大小()>10)
ImageDownloader.sSoftBitmapCache.put((字符串)paranameousEntry.getKey(),新的软引用((位图)paranameousEntry.getValue());
for(布尔布尔布尔布尔=真;布尔布尔=假)
返回布尔;
}
};
私有位图localObject2;私有void addBitmapToCache(字符串参数字符串,位图参数位图)
{
if(参数位图!=null)
已同步(此.sHardBitmapCache)
{
this.sHardBitmapCache.put(paramString,paramBitmap);
}
}
私有静态布尔值cancelPotentialDownload(字符串参数String,ImageView参数ImageView)
{
布尔布尔布尔=真;
BitmapDownloaderTask localBitmapDownloaderTask=getBitmapDownloaderTask(paramImageView);
if(localBitmapDownloaderTask!=null)
{
String str=localBitmapDownloaderTask.url;
如果((str!=null)&&(str.equals(paramString)))
打破标签39;
localBitmapDownloaderTask.cancel(bool);
}
while(true)
{
返回布尔;
标签39:bool=false;
}
}
私有void forceDownload(String paramString,ImageView paramageview)
{
if(paramString==null)
paramImageView.setImageDrawable(空);
while(true)
{
返回;
if(cancelPotentialDownload(paramString,paramImageView))
开关($switch_TABLE$org$flutural$recommendation$ImageDownloader$Mode()[this.Mode.ordinal()]))
{
违约:
打破
案例1:
位图localBitmap=下载位图(paramString);
addBitmapToCache(paramString,localBitmap);
setImageBitmap(localBitmap);
打破
案例2:
paramImageView.setMinimumHeight(156);
新建BitmapDownloaderTask(paramImageView).execute(新字符串[]{paramString});
打破
案例3:
BitmapDownloaderTask localBitmapDownloaderTask=新BitmapDownloaderTask(paramImageView);
setImageDrawable(新的DownloadedDrawable(localBitmapDownloaderTask));
paramImageView.setMinimumHeight(156);
执行(新字符串[]{paramString});
}
}
}
私有int[]$SWITCH_TABLE$org$fluturasymphony$recommendation$ImageDownloader$Mode(){
//TODO自动生成的方法存根
返回null;
}
私有静态BitmapDownloaderTask getBitmapDownloaderTask(ImageView参数ImageView)
{
可拉伸局部可拉伸;
如果(paramImageView!=null)
{
localDrawable=paramImageView.getDrawable();
如果(!(localDrawable instanceof downloaddedrawable));
}
对于(BitmapDownloaderTask localBitmapDownloaderTask=((DownloadedDrawable)localDrawable)。getBitmapDownloaderTask();;localBitmapDownloaderTask=null)
返回localBitmapDownloaderTask;
}
私有位图getBitmapFromCache(字符串paramString)
{
已同步(此.sHardBitmapCache)
{
位图localBitmap1=(位图)this.sHardBitmapCache.get(paramString);
if(localBitmap1!=null)
{
this.sHardBitmapCache.remove(paramString);
this.sHardBitmapCache.put(paramString,localBitmap1);
localObject2=localBitmap1;
}
其他的
{
SoftReference localSoftReference=(SoftReference)sSoftBitmapCache.get(paramString);
if(localSoftReference!=null)
{
位图localBitmap2=(位图)localSoftReference.get();
if(localBitmap2!=null)
localObject2=localBitmap2;
}
}
}
sSoftBitmapCache.remove(paramString);
对象localObject2=null;
返回(位图)localObject2;
}
私有void resetPurgeTimer()
{
this.purgeHandler.removeCallbacks(this.purger);
this.purgeHandler.postDelayed(this.purger,10000L);
}
公共void clearCache()
{
this.sHardBitmapCache.clear();
sSoftBitmapCache.clear();
}
public void下载(String paramString,ImageView paramageview)
{
重置PurgeTimer();
位图localBitmap=getBitmapFromCache(paramString);
if(localBitmap==null)
强制下载(paramString、paramImageView);
while(true)
{
返回;
cancelPotentialDownload(paramString、paramImageView);
setImageBitmap(localBitmap);
}
}
//错误//
位图下载位图(字符串参数字符串)
{
//字节码:
//0:aload_0
//1:getfield 65 org/fluturasymphony/Recommension/ImageDownloader:mode Lorg/fluturasymphony/Recommension/ImageDownloader$mode;
//4:getstatic 48 org/fluturasymphony/Recommension/ImageDownloader$模式:无异步任务Lorg/fluturasymphony/Recommension/ImageDownloader$模式;
//7:如果acmpne+107->114
//10:new213 org/apache/http/impl/client/DefaultHttpClient
//13:dup
//14:invokespecial 214 org/apache/http/impl/client/DefaultHttpClient:()V
//17:astore_2
//18:new 216 org/apache/http/client/methods/HttpGet
//21:dup
//22:aload_1
//23:invokespecial 219 org/apache/http/client/methods/HttpGet:(Ljava/lang/String;)V
//26:astore_3
//27:aload_2
//28:aload_3
//29:调用接口22