diff --git a/app/build.gradle b/app/build.gradle
index ec76eb0..e322430 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,7 +6,7 @@ android {
applicationId "us.spotco.malwarescanner"
minSdkVersion 21
targetSdkVersion 26
- versionCode 24
+ versionCode 25
versionName "2.1"
}
buildTypes {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1a84004..2fe6c8f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,7 +34,7 @@
@@ -44,7 +44,6 @@
-
diff --git a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
index 053c3ca..0478572 100644
--- a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
+++ b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
@@ -50,7 +50,7 @@ public class EventReceiver extends BroadcastReceiver {
e.printStackTrace();
}
if (filesToScan.size() > 0) {
- new MalwareScanner(null, context, false).execute(filesToScan);
+ new MalwareScanner(null, context, false).executeOnExecutor(Utils.getThreadPoolExecutor(), filesToScan);
}
}
}
diff --git a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
index e50ed14..89e3ef8 100644
--- a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
+++ b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
@@ -178,7 +178,7 @@ public class MainActivity extends AppCompatActivity {
if (scanExternal) {
filesToScan.addAll(Utils.getFilesRecursive(new File("/storage")));
}
- malwareScanner.execute(filesToScan);
+ malwareScanner.executeOnExecutor(Utils.getThreadPoolExecutor(), filesToScan);
}
private void updateDatabase() {
diff --git a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java
index 4b7a43b..1ea2531 100644
--- a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java
+++ b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java
@@ -11,7 +11,6 @@ import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import java.io.File;
-import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import gnu.trove.set.hash.THashSet;
@@ -30,11 +29,7 @@ public class MalwareScannerService extends Service {
@Override
public final int onStartCommand(Intent intent, int flags, int startId) {
- int maxTheads = Runtime.getRuntime().availableProcessors();
- if (maxTheads >= 2) {
- maxTheads /= 2;
- }
- threadPoolExecutor = (ThreadPoolExecutor) Executors.newScheduledThreadPool(maxTheads);
+ threadPoolExecutor = Utils.getThreadPoolExecutor();
threadPoolExecutor.execute(new Runnable() {
@Override
public void run() {
diff --git a/app/src/main/java/us/spotco/malwarescanner/Utils.java b/app/src/main/java/us/spotco/malwarescanner/Utils.java
index 213747a..c8bc511 100644
--- a/app/src/main/java/us/spotco/malwarescanner/Utils.java
+++ b/app/src/main/java/us/spotco/malwarescanner/Utils.java
@@ -4,6 +4,8 @@ import android.app.ActivityManager;
import android.content.Context;
import java.io.File;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadPoolExecutor;
import gnu.trove.set.hash.THashSet;
@@ -13,6 +15,22 @@ class Utils {
public final static int MAX_SCAN_SIZE_REALTIME = MAX_SCAN_SIZE / 2; //40MB
public static int FILES_SCANNED = 0;
+ private static ThreadPoolExecutor threadPoolExecutor = null;
+
+ public static ThreadPoolExecutor getThreadPoolExecutor() {
+ if (threadPoolExecutor == null) {
+ threadPoolExecutor = (ThreadPoolExecutor) Executors.newScheduledThreadPool(getMaxThreads());
+ }
+ return threadPoolExecutor;
+ }
+
+ public static int getMaxThreads() {
+ int maxTheads = Runtime.getRuntime().availableProcessors();
+ if (maxTheads >= 2) {
+ maxTheads /= 2;
+ }
+ return maxTheads;
+ }
public static THashSet getFilesRecursive(File root) {
THashSet filesAll = new THashSet<>();