mirror of https://github.com/M66B/FairEmail.git
Keep cleanup
This commit is contained in:
parent
07d0b30816
commit
952d93bf17
|
@ -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);
|
||||
}
|
||||
WorkerCleanup.queue(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue