imagecache.java

来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 91 行

JAVA
91
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   ImageCache.java

package com.sonyericsson.fb.utils;

import java.util.Vector;
import javax.microedition.lcdui.Image;
import se.southend.drops.cache.MemoryCache;
import se.southend.drops.gui.BitmapSprite;
import se.southend.drops.resource.ResourceHandler;
import se.southend.drops.resource.ResourceListener;

// Referenced classes of package com.sonyericsson.fb.utils:
//            IImageCacheResponseListener

public class ImageCache
    implements ResourceListener
{

    public static ImageCache getInstance()
    {
        if(instance == null)
            instance = new ImageCache();
        return instance;
    }

    private ImageCache()
    {
        mBitmapSprites = new Vector();
        mUrls = new Vector();
        mListeners = new Vector();
    }

    public void loadImage(BitmapSprite target, String url)
    {
        loadImage(target, url, null);
    }

    public void loadImage(BitmapSprite target, String url, IImageCacheResponseListener listener)
    {
        synchronized(this)
        {
            if(MemoryCache.getInstance().contains(url))
            {
                byte imageData[] = MemoryCache.getInstance().get(url);
                target.setImage(Image.createImage(imageData, 0, imageData.length));
                if(listener != null)
                    listener.downloadCompleted(url);
            } else
            {
                mListeners.addElement(listener);
                ResourceHandler.getInstance().request(url, this);
                mBitmapSprites.addElement(target);
                mUrls.addElement(url);
            }
        }
    }

    public void dataReceived(String url, byte data[], int errorCode, String MIMEtype)
    {
        if(errorCode == 0)
            synchronized(this)
            {
                MemoryCache.getInstance().put("url", data);
                for(int i = mUrls.size() - 1; i >= 0; i--)
                {
                    if(!mUrls.elementAt(i).equals(url))
                        continue;
                    Image image = Image.createImage(data, 0, data.length);
                    ((BitmapSprite)mBitmapSprites.elementAt(i)).setImage(image);
                    if(mListeners.elementAt(i) != null)
                    {
                        IImageCacheResponseListener listener = (IImageCacheResponseListener)mListeners.elementAt(i);
                        listener.downloadCompleted(url);
                    }
                    mUrls.removeElementAt(i);
                    mBitmapSprites.removeElementAt(i);
                    mListeners.removeElementAt(i);
                }

            }
    }

    private Vector mBitmapSprites;
    private Vector mUrls;
    private Vector mListeners;
    private static ImageCache instance;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?