From 85b15cd1c1026e7b83663c669be29251df726192 Mon Sep 17 00:00:00 2001 From: Dmitry Brant Date: Fri, 19 May 2017 15:57:25 +0200 Subject: [PATCH] Further improve image loading, and remove unused code. --- .../free/nrw/commons/CommonsApplication.java | 22 +++---------------- .../nrw/commons/MediaThumbnailFetchTask.java | 6 +++++ .../free/nrw/commons/MediaWikiImageView.java | 11 ++++++++-- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 01477a38e..57c360385 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -84,7 +84,6 @@ public class CommonsApplication extends Application { private AbstractHttpClient httpClient = null; private MWApi api = null; private CacheController cacheData = null; - private RequestQueue volleyQueue = null; private DBOpenHelper dbOpenHelper = null; private NearbyPlaces nearbyPlaces = null; @@ -139,15 +138,6 @@ public class CommonsApplication extends Application { return cacheData; } - public RequestQueue getVolleyQueue() { - if (volleyQueue == null) { - DiskBasedCache cache = new DiskBasedCache(getCacheDir(), 16 * 1024 * 1024); - volleyQueue = new RequestQueue(cache, new BasicNetwork(new HurlStack())); - volleyQueue.start(); - } - return volleyQueue; - } - public synchronized DBOpenHelper getDBOpenHelper() { if (dbOpenHelper == null) { dbOpenHelper = new DBOpenHelper(this); @@ -190,12 +180,7 @@ public class CommonsApplication extends Application { cacheData = new CacheController(); DiskBasedCache cache = new DiskBasedCache(getCacheDir(), 16 * 1024 * 1024); - volleyQueue = new RequestQueue(cache, new BasicNetwork(new HurlStack())); - volleyQueue.start(); - } - - public MWApi getApi() { - return api; + new RequestQueue(cache, new BasicNetwork(new HurlStack())).start(); } /** @@ -262,15 +247,14 @@ public class CommonsApplication extends Application { preferences.edit().clear().commit(); context.getSharedPreferences("prefs", Context.MODE_PRIVATE).edit().clear().commit(); preferences.edit().putBoolean("firstrun", false).apply(); - updateAllDatabases(context); + updateAllDatabases(); currentAccount = null; } /** * Deletes all tables and re-creates them. - * @param context context */ - public void updateAllDatabases(Context context) { + public void updateAllDatabases() { DBOpenHelper dbOpenHelper = CommonsApplication.getInstance().getDBOpenHelper(); dbOpenHelper.getReadableDatabase().close(); SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); diff --git a/app/src/main/java/fr/free/nrw/commons/MediaThumbnailFetchTask.java b/app/src/main/java/fr/free/nrw/commons/MediaThumbnailFetchTask.java index 2f0334876..fb73b5a2e 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaThumbnailFetchTask.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaThumbnailFetchTask.java @@ -1,11 +1,17 @@ package fr.free.nrw.commons; import android.os.AsyncTask; +import android.support.annotation.NonNull; import org.mediawiki.api.ApiResult; class MediaThumbnailFetchTask extends AsyncTask { private static final String THUMB_SIZE = "640"; + protected final Media media; + + public MediaThumbnailFetchTask(@NonNull Media media) { + this.media = media; + } @Override protected String doInBackground(String... params) { diff --git a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java index a80092b3b..b7a3be903 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java @@ -1,6 +1,7 @@ package fr.free.nrw.commons; import android.content.Context; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.util.LruCache; import android.util.AttributeSet; @@ -27,15 +28,16 @@ public class MediaWikiImageView extends SimpleDraweeView { if (currentThumbnailTask != null) { currentThumbnailTask.cancel(true); } - setImageURI((String) null); if(media == null) { + setImageURI((String) null); return; } if (thumbnailUrlCache.get(media.getFilename()) != null) { setImageUrl(thumbnailUrlCache.get(media.getFilename())); } else { - currentThumbnailTask = new ThumbnailFetchTask(); + setImageURI((String) null); + currentThumbnailTask = new ThumbnailFetchTask(media); currentThumbnailTask.execute(media.getFilename()); } } @@ -53,11 +55,16 @@ public class MediaWikiImageView extends SimpleDraweeView { } private class ThumbnailFetchTask extends MediaThumbnailFetchTask { + ThumbnailFetchTask(@NonNull Media media) { + super(media); + } + @Override protected void onPostExecute(String result) { if (isCancelled()) { return; } + thumbnailUrlCache.put(media.getFilename(), result); setImageUrl(result); } }