mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-06 17:13:23 +02:00
Added experimental option to use background service
This commit is contained in:
@@ -136,7 +136,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
public void onCreate() {
|
||||
EntityLog.log(this, "Service create version=" + BuildConfig.VERSION_NAME);
|
||||
super.onCreate();
|
||||
startForeground(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(null, null).build());
|
||||
|
||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean background_service = prefs.getBoolean("background_service", false);
|
||||
if (background_service)
|
||||
stopForeground(true);
|
||||
else
|
||||
startForeground(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(null, null).build());
|
||||
|
||||
handler = new Handler();
|
||||
|
||||
@@ -278,10 +284,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
WorkerFts.cancel(ServiceSynchronize.this);
|
||||
}
|
||||
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
||||
} catch (Throwable ex) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);
|
||||
boolean background_service = prefs.getBoolean("background_service", false);
|
||||
if (!background_service)
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
||||
} catch (Throwable ex) {
|
||||
/*
|
||||
java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.lang.Iterable.iterator()' on a null object reference
|
||||
at android.app.ApplicationPackageManager.getUserIfProfile(ApplicationPackageManager.java:2167)
|
||||
@@ -293,8 +302,8 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
at androidx.core.app.NotificationCompatBuilder.build(SourceFile:247)
|
||||
at androidx.core.app.NotificationCompat$Builder.build(SourceFile:1677)
|
||||
*/
|
||||
Log.w(ex);
|
||||
}
|
||||
Log.w(ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (!runService)
|
||||
@@ -420,8 +429,6 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
}
|
||||
});
|
||||
|
||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
final TwoStateOwner cowner = new TwoStateOwner(this, "liveUnseenNotify");
|
||||
|
||||
db.folder().liveSynchronizing().observe(this, new Observer<Integer>() {
|
||||
@@ -666,7 +673,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
Log.logExtras(intent);
|
||||
|
||||
super.onStartCommand(intent, flags, startId);
|
||||
startForeground(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(null, null).build());
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean background_service = prefs.getBoolean("background_service", false);
|
||||
if (background_service)
|
||||
stopForeground(true);
|
||||
else
|
||||
startForeground(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(null, null).build());
|
||||
|
||||
if (action != null)
|
||||
try {
|
||||
@@ -1701,12 +1714,16 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
"Updated network=" + network +
|
||||
" capabilities " + capabilities +
|
||||
" suitable=" + lastSuitable);
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
||||
} catch (Throwable ex) {
|
||||
Log.w(ex);
|
||||
}
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);
|
||||
boolean background_service = prefs.getBoolean("background_service", false);
|
||||
if (!background_service)
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
||||
} catch (Throwable ex) {
|
||||
Log.w(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1962,14 +1979,14 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
}
|
||||
|
||||
static void eval(Context context, String reason) {
|
||||
ContextCompat.startForegroundService(context,
|
||||
start(context,
|
||||
new Intent(context, ServiceSynchronize.class)
|
||||
.setAction("eval")
|
||||
.putExtra("reason", reason));
|
||||
}
|
||||
|
||||
static void reload(Context context, Long account, boolean force, String reason) {
|
||||
ContextCompat.startForegroundService(context,
|
||||
start(context,
|
||||
new Intent(context, ServiceSynchronize.class)
|
||||
.setAction("reload")
|
||||
.putExtra("account", account == null ? -1 : account)
|
||||
@@ -1978,14 +1995,23 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
}
|
||||
|
||||
static void reschedule(Context context) {
|
||||
ContextCompat.startForegroundService(context,
|
||||
start(context,
|
||||
new Intent(context, ServiceSynchronize.class)
|
||||
.setAction("alarm"));
|
||||
}
|
||||
|
||||
static void watchdog(Context context) {
|
||||
ContextCompat.startForegroundService(context,
|
||||
start(context,
|
||||
new Intent(context, ServiceSynchronize.class)
|
||||
.setAction("watchdog"));
|
||||
}
|
||||
|
||||
private static void start(Context context, Intent intent) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean background_service = prefs.getBoolean("background_service", false);
|
||||
if (background_service)
|
||||
context.startService(intent);
|
||||
else
|
||||
ContextCompat.startForegroundService(context, intent);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user