diff --git a/app/src/main/java/eu/faircode/email/ServiceBase.java b/app/src/main/java/eu/faircode/email/ServiceBase.java new file mode 100644 index 0000000000..577b830688 --- /dev/null +++ b/app/src/main/java/eu/faircode/email/ServiceBase.java @@ -0,0 +1,68 @@ +package eu.faircode.email; + +/* + This file is part of FairEmail. + + FairEmail is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + FairEmail is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FairEmail. If not, see . + + Copyright 2018-2019 by Marcel Bokhorst (M66B) +*/ + +import android.content.Intent; +import android.os.Bundle; + +import androidx.lifecycle.LifecycleService; + +import com.bugsnag.android.BreadcrumbType; +import com.bugsnag.android.Bugsnag; + +import java.util.HashMap; +import java.util.Map; + +abstract class ServiceBase extends LifecycleService { + @Override + public void onCreate() { + Map crumb = new HashMap<>(); + crumb.put("state", "create"); + Bugsnag.leaveBreadcrumb(this.getClass().getSimpleName(), BreadcrumbType.STATE, crumb); + + super.onCreate(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Map crumb = new HashMap<>(); + if (intent != null) { + crumb.put("action", intent.getAction()); + Bundle data = intent.getExtras(); + if (data != null) + for (String key : data.keySet()) { + Object value = data.get(key); + crumb.put(key, value == null ? null : value.toString()); + } + } + Bugsnag.leaveBreadcrumb(this.getClass().getSimpleName(), BreadcrumbType.LOG, crumb); + + return super.onStartCommand(intent, flags, startId); + } + + @Override + public void onDestroy() { + Map crumb = new HashMap<>(); + crumb.put("state", "destroy"); + Bugsnag.leaveBreadcrumb(this.getClass().getSimpleName(), BreadcrumbType.STATE, crumb); + + super.onDestroy(); + } +} diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index b60f88adf1..b113c44024 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -33,7 +33,6 @@ import android.text.TextUtils; import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; -import androidx.lifecycle.LifecycleService; import androidx.lifecycle.Observer; import androidx.preference.PreferenceManager; @@ -63,7 +62,7 @@ import javax.mail.internet.MimeMessage; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; -public class ServiceSend extends LifecycleService { +public class ServiceSend extends ServiceBase { private int lastUnsent = 0; private boolean lastSuitable = false; private TwoStateOwner cowner; diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index ae32d709e4..8dbaa7745d 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -39,7 +39,6 @@ import androidx.annotation.Nullable; import androidx.core.app.AlarmManagerCompat; import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; -import androidx.lifecycle.LifecycleService; import androidx.lifecycle.Observer; import androidx.preference.PreferenceManager; @@ -92,7 +91,7 @@ import javax.mail.event.StoreListener; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; -public class ServiceSynchronize extends LifecycleService { +public class ServiceSynchronize extends ServiceBase { private ConnectionHelper.NetworkState networkState = new ConnectionHelper.NetworkState(); private Core.State state; private int lastStartId = -1;