在android中缓存图像

时间:2012-07-30 09:05:28

标签: android caching

我想在下载时缓存一些图像,当我的应用程序再次启动时,它应该检查图像是否被缓存,因此它返回图像,否则为null,所以我再次下载并缓存它们

我尝试使用LRU Cache http://developer.android.com/reference/android/util/LruCache.html,但它对我不起作用,因为它适用于API级别12,而我正在使用10。 这是那个问题 caching images with LruCache

缓存

的其他易于采用的可能解决方案是什么?

2 个答案:

答案 0 :(得分:1)

查看此文件以存储您的文件: Storage options android sdk

答案 1 :(得分:1)

好吧我确实喜欢这个

        private Bitmap getFile(String fileName) {
        Bitmap file = null;
         try {
              FileInputStream fis; 
              fis = openFileInput(fileName);
              file = BitmapFactory.decodeStream(fis);

              fis.close();
         }
         catch (FileNotFoundException e) {
          e.printStackTrace();
         } catch (IOException e) {
          e.printStackTrace();
         }
        return file;
    }
    protected void putFile(Bitmap bitmap, String fileName){
        FileOutputStream fos;
           try {
            fos = openFileOutput(fileName, Context.MODE_PRIVATE);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
           }    
           catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
    }
    @Override
    protected String doInBackground(Void... params) {

        for (int i = 0; i < HomeActivity.globalObj.categoriesList.size(); i++) {
            Bitmap b;
            b = getFile(HomeActivity.globalObj.categoriesList.get(i).name);
            if (b == null) {
                b = getImageBitmap(HomeActivity.globalObj.categoriesList.get(i).large_image);
                putFile(b, HomeActivity.globalObj.categoriesList.get(i).name);

            }
            ImageView iv = new ImageView(getApplicationContext());
            iv.setImageBitmap(b);
            imageViewList.add(iv);
        }