Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2023-03-20 10:05:59 +0300
committerStefan Niedermann <info@niedermann.it>2023-03-20 10:05:59 +0300
commitf3cb21dbf1f41f8f2a2f5d37bc006b2aa7e72634 (patch)
treea6a8e043f50196a920a9f633bd8eb43e4088d06a
parent9813acf93f43637d4fb40f64f83846325253b5dc (diff)
fix: Avoid SQLiteConstraint failures by reverting to custom ExecutorService
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/repository/BaseRepository.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/viewmodel/BaseViewModel.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java19
5 files changed, 13 insertions, 17 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java
index 387350562..dc5883ba9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java
@@ -91,6 +91,7 @@ import it.niedermann.nextcloud.deck.model.widget.singlecard.SingleCardWidgetMode
import it.niedermann.nextcloud.deck.remote.api.IResponseCallback;
import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsAdapterItem;
import it.niedermann.nextcloud.deck.ui.widget.singlecard.SingleCardWidget;
+import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider;
public class DataBaseAdapter {
@NonNull
@@ -108,7 +109,7 @@ public class DataBaseAdapter {
private final int defaultColor;
public DataBaseAdapter(@NonNull Context appContext) {
- this(appContext, DeckDatabase.getInstance(appContext), Executors.newCachedThreadPool(), Executors.newCachedThreadPool());
+ this(appContext, DeckDatabase.getInstance(appContext), Executors.newCachedThreadPool(), ExecutorServiceProvider.getLinkedBlockingQueueExecutor());
}
@VisibleForTesting
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java
index af23b6d2e..e7533b66c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java
@@ -23,7 +23,7 @@ public class RequestHelper {
final ResponseConsumer<T> cb = new ResponseConsumer<>(callback);
return call.getObservableFromCall()
- .subscribeOn(Schedulers.from(ExecutorServiceProvider.getExecutorService()))
+ .subscribeOn(Schedulers.from(ExecutorServiceProvider.getLinkedBlockingQueueExecutor()))
.subscribe(cb, cb.getExceptionConsumer());
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/repository/BaseRepository.java b/app/src/main/java/it/niedermann/nextcloud/deck/repository/BaseRepository.java
index 238195e03..981b16ec8 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/repository/BaseRepository.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/repository/BaseRepository.java
@@ -71,7 +71,7 @@ public class BaseRepository {
}
protected BaseRepository(@NonNull Context context, @NonNull ConnectivityUtil connectivityUtil) {
- this(context, connectivityUtil, new DataBaseAdapter(context.getApplicationContext()), ExecutorServiceProvider.getExecutorService());
+ this(context, connectivityUtil, new DataBaseAdapter(context.getApplicationContext()), ExecutorServiceProvider.getLinkedBlockingQueueExecutor());
}
protected BaseRepository(@NonNull Context context,
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/viewmodel/BaseViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/viewmodel/BaseViewModel.java
index 02788ff07..e6ae707ea 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/viewmodel/BaseViewModel.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/viewmodel/BaseViewModel.java
@@ -7,9 +7,9 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.ViewModel;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import it.niedermann.nextcloud.deck.repository.BaseRepository;
+import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider;
/**
* To be used for {@link ViewModel}s which need an {@link BaseRepository} instance
@@ -26,7 +26,7 @@ public abstract class BaseViewModel extends AndroidViewModel {
public BaseViewModel(@NonNull Application application,
@NonNull BaseRepository baseRepository) {
- this(application, baseRepository, Executors.newCachedThreadPool());
+ this(application, baseRepository, ExecutorServiceProvider.getLinkedBlockingQueueExecutor());
}
public BaseViewModel(@NonNull Application application,
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java
index dc5e30bac..8ef8c5771 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java
@@ -1,27 +1,22 @@
package it.niedermann.nextcloud.deck.util;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
-/**
- * If we really want <strong>this</strong>, we should default to {@link Executors#newWorkStealingPool()}.
- * Though I recommend to distinguish between blocking threads and non-blocking threads (like network operations), where it does not make sense to limit it to available CPU cores.
- */
-//@Deprecated(forRemoval = true)
public class ExecutorServiceProvider {
-// private static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();
+ private static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();
- private static final ExecutorService EXECUTOR =
- Executors.newWorkStealingPool();
-// new ThreadPoolExecutor(NUMBER_OF_CORES>>1, NUMBER_OF_CORES,
-// 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
+ private static final ExecutorService EXECUTOR = new ThreadPoolExecutor(NUMBER_OF_CORES >> 1, NUMBER_OF_CORES,
+ 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
private ExecutorServiceProvider() {
// hide Constructor
}
- public static ExecutorService getExecutorService() {
+ public static ExecutorService getLinkedBlockingQueueExecutor() {
return EXECUTOR;
}
}