From 4050c6a8620cc2f23307e73eba459c83744b7e85 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 22 May 2015 13:02:26 +0200 Subject: Store FeedSorter using a separate thread, as it takes some time --- app/src/main/java/org/rssin/rssin/Filter.java | 28 ++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'app/src/main/java') diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java index 2e1188e..a66f955 100755 --- a/app/src/main/java/org/rssin/rssin/Filter.java +++ b/app/src/main/java/org/rssin/rssin/Filter.java @@ -133,8 +133,30 @@ public class Filter implements Storable { * @param storageProvider * @throws Exception */ - public synchronized void storeFeedSorter(StorageProvider storageProvider) throws Exception { - ensureFeedSorter(storageProvider); - storageProvider.store(storageKey, feedSorter); + public synchronized void storeFeedSorter(StorageProvider storageProvider) { + Thread thread = new Thread(new FeedSorterStorer(storageKey, storageProvider, feedSorter)); + thread.start(); + } + + private class FeedSorterStorer implements Runnable { + private final Object storageKey; + private final StorageProvider storageProvider; + private final FeedSorter feedSorter; + + public FeedSorterStorer(Object storageKey, StorageProvider storageProvider, FeedSorter feedSorter) { + this.storageKey = storageKey; + this.storageProvider = storageProvider; + this.feedSorter = feedSorter; + } + + @Override + public void run() { + ensureFeedSorter(storageProvider); + try { + storageProvider.store(storageKey, feedSorter); + } catch (Exception e) { + Log.e("Filter", "Failed to store FeedSorter", e); + } + } } } -- cgit v1.2.3