1

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

我尝试使用 LRU 缓存http://developer.android.com/reference/android/util/LruCache.html但它对我不起作用,因为它适用于 API 级别 12,而我正在使用 10。这就是使用 LruCache 缓存图像的问题

其他易于采用的缓存解决方案是什么

4

2 回答 2

1

看看这个来存储你的文件: Storage options android sdk

于 2012-07-30T09:16:31.993 回答
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);
        }
于 2012-08-01T06:29:46.997 回答