FastImageProvider

  1. import javax.microedition.lcdui.*;
  2. import java.util.*;
  3.  
  4. public class FastImageProvider implements Runnable{
  5.     public Hashtable images=new Hashtable(500);
  6.     public String[] locatorList={"/intro/0.PNG","/intro/1.PNG","/intro/2.PNG","/intro/3.PNG"};
  7.     public Hashtable loadedScreens=new Hashtable(30);
  8.     public String taskName;
  9.     public String strArg1;
  10.     public FastImageProvider parent;
  11.  
  12.     public Image getImage(String locator){
  13.         if(images.containsKey(locator)){
  14.             return (Image)images.get(locator);
  15.         }else{
  16.             storeImage(locator);
  17.             return getImage(locator);
  18.         }
  19.     }public void storeImage(String locator){
  20.         try{
  21.             images.put(locator, Image.createImage(locator));
  22.         }catch(Exception e){}
  23.     }public void storeManyImages(String[] locators){
  24.         for(int i=0;i<locators.length;i+=1){
  25.             storeImage(locators[i]);
  26.         }
  27.     }public void loadScreen(String screen){
  28.         if(!loadedScreens.containsKey(screen)){
  29.             for(int i=0;i<locatorList.length;i+=1){
  30.                 storeImage("/img/"+screen+locatorList[i]);
  31.             }
  32.             loadedScreens.put(screen,screen);
  33.         }
  34.     }public void loadScreenAsync(String screen){
  35.         if(!loadedScreens.containsKey(screen)){
  36.             new Thread(new FastImageProvider(this,"loadScreen",screen)).start();
  37.         }
  38.     }
  39.     public void run(){
  40.         if(taskName=="loadScreen"){
  41.             if(!parent.loadedScreens.containsKey(strArg1)){
  42.                 for(int i=0;i<locatorList.length;i+=1){
  43.                     try{
  44.                         parent.images.put("/img/"+strArg1+locatorList[i], Image.createImage("/img/"+strArg1+locatorList[i]));
  45.                     }catch(Exception e){}
  46.                 }
  47.                 parent.loadedScreens.put(strArg1,strArg1);
  48.             }
  49.         }
  50.     }public FastImageProvider(FastImageProvider parent, String taskName, String strArg1){
  51.         this.taskName=taskName;
  52.         this.strArg1=strArg1;
  53.         this.parent=parent;
  54.     }public FastImageProvider(){}
  55. }
При повторном запросе на изображение выдаётся кешированное, что ускоряет приложение по сравнению с Image.createImage каждый раз

Реклама

Мы в соцсетях

tw tg yt gt