Keep cleanup

This commit is contained in:
M66B 2019-08-03 15:36:51 +02:00
parent 07d0b30816
commit 952d93bf17
4 changed files with 29 additions and 29 deletions

View File

@ -106,14 +106,8 @@ public class ApplicationEx extends Application {
MessageHelper.setSystemProperties(this);
ContactInfo.init(this);
try {
WorkerWatchdog.init(this);
} catch (Throwable ex) {
// Incorrect:
// java.lang.RuntimeException: Unable to create application eu.faircode.email.ApplicationEx:
// java.lang.IllegalStateException: WorkManager is not initialized properly.
Log.e(ex);
}
WorkerWatchdog.init(this);
WorkerCleanup.queue(this);
}
@Override

View File

@ -26,8 +26,6 @@ import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
public class ReceiverAutoStart extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
@ -40,19 +38,7 @@ public class ReceiverAutoStart extends BroadcastReceiver {
ServiceSynchronize.boot(context);
ServiceSend.boot(context);
Thread cleanup = new Thread(new Runnable() {
@Override
public void run() {
try {
WorkerCleanup.cleanup(context, true);
} catch (Throwable ex) {
Log.e(ex);
}
}
});
cleanup.setPriority(THREAD_PRIORITY_BACKGROUND);
cleanup.start();
WorkerCleanup.queueOnce(context);
}
}
}

View File

@ -223,8 +223,6 @@ public class ServiceSynchronize extends ServiceBase {
WidgetUnified.update(ServiceSynchronize.this);
}
});
WorkerCleanup.queue(this);
}
@Override
@ -241,8 +239,6 @@ public class ServiceSynchronize extends ServiceBase {
Core.notifyReset(this);
WorkerCleanup.cancel(this);
stopForeground(true);
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

View File

@ -24,7 +24,9 @@ import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
import androidx.work.Data;
import androidx.work.ExistingPeriodicWorkPolicy;
import androidx.work.OneTimeWorkRequest;
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import androidx.work.Worker;
@ -37,6 +39,8 @@ import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
public class WorkerCleanup extends Worker {
private static final int CLEANUP_INTERVAL = 4; // hours
private static final long KEEP_FILES_DURATION = 3600 * 1000L; // milliseconds
@ -53,7 +57,7 @@ public class WorkerCleanup extends Worker {
@Override
public Result doWork() {
Log.i("Running " + getName());
cleanup(getApplicationContext(), false);
cleanup(getApplicationContext(), getInputData().getBoolean("manual", false));
return Result.success();
}
@ -61,6 +65,7 @@ public class WorkerCleanup extends Worker {
DB db = DB.getInstance(context);
try {
Log.i("Start cleanup manual=" + manual);
Thread.currentThread().setPriority(THREAD_PRIORITY_BACKGROUND);
if (manual) {
// Check message files
@ -175,9 +180,10 @@ public class WorkerCleanup extends Worker {
PeriodicWorkRequest workRequest =
new PeriodicWorkRequest.Builder(WorkerCleanup.class, CLEANUP_INTERVAL, TimeUnit.HOURS)
.setInitialDelay(CLEANUP_INTERVAL, TimeUnit.HOURS)
.build();
WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(getName(), ExistingPeriodicWorkPolicy.REPLACE, workRequest);
.enqueueUniquePeriodicWork(getName(), ExistingPeriodicWorkPolicy.KEEP, workRequest);
Log.i("Queued " + getName());
} catch (IllegalStateException ex) {
@ -186,6 +192,24 @@ public class WorkerCleanup extends Worker {
}
}
static void queueOnce(Context context) {
try {
Log.i("Queuing " + getName() + " once");
Data data = new Data.Builder().putBoolean("manual", true).build();
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(WorkerCleanup.class)
.setInputData(data)
.build();
WorkManager.getInstance(context).enqueue(workRequest);
Log.i("Queued " + getName() + " once");
} catch (IllegalStateException ex) {
// https://issuetracker.google.com/issues/138465476
Log.w(ex);
}
}
static void cancel(Context context) {
try {
Log.i("Cancelling " + getName());