Ver Fonte

Protect the app against crashes when opening the thumbnails cache

David A. Velasco há 10 anos atrás
pai
commit
e72555f2bd

+ 7 - 11
src/com/owncloud/android/ui/adapter/DiskLruImageCache.java

@@ -36,17 +36,13 @@ public class DiskLruImageCache {
     private static final String TAG = "DiskLruImageCache";
 
     public DiskLruImageCache( Context context,String uniqueName, int diskCacheSize,
-        CompressFormat compressFormat, int quality ) {
-        try {
-                final File diskCacheDir = getDiskCacheDir(context, uniqueName );
-                mDiskCache = DiskLruCache.open(
-                        diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize 
-                );
-                mCompressFormat = compressFormat;
-                mCompressQuality = quality;
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+        CompressFormat compressFormat, int quality ) throws IOException {
+        final File diskCacheDir = getDiskCacheDir(context, uniqueName );
+        mDiskCache = DiskLruCache.open(
+                diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize 
+        );
+        mCompressFormat = compressFormat;
+        mCompressQuality = quality;
     }
 
     private boolean writeBitmapToFile( Bitmap bitmap, DiskLruCache.Editor editor )

+ 7 - 3
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@ -104,9 +104,13 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
         @Override
         protected Void doInBackground(File... params) {
             synchronized (thumbnailDiskCacheLock) {
-                mThumbnailCache = new DiskLruImageCache(mContext, "thumbnailCache", 
-                                    DISK_CACHE_SIZE, mCompressFormat, mCompressQuality);
-
+                try {
+                    mThumbnailCache = new DiskLruImageCache(mContext, "thumbnailCache", 
+                                        DISK_CACHE_SIZE, mCompressFormat, mCompressQuality);
+                } catch (Exception e) {
+                    Log_OC.d(TAG, "Thumbnail cache could not be opened ", e);
+                    mThumbnailCache = null;
+                }
                 mThumbnailCacheStarting = false; // Finished initialization
                 thumbnailDiskCacheLock.notifyAll(); // Wake any waiting threads
             }