diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2016-11-08 12:20:07 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2016-11-08 12:20:07 +0100 |
commit | bca8f11c9c2d3df9dcfc2253bc108fc6e9a241ef (patch) | |
tree | b8b7b81edddab3ff0f2931679f7645fd3fa2c01f /src/main/java/eu/siacs/conversations/services | |
parent | 1a57599da2b99f37d8d5ca611a4c4f83f7fd2e00 (diff) |
add frequent restart detection
Diffstat (limited to 'src/main/java/eu/siacs/conversations/services')
-rw-r--r-- | src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 12f20d03..044a518a 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -864,6 +864,11 @@ public class XmppConnectionService extends Service { this.databaseBackend = DatabaseBackend.getInstance(getApplicationContext()); this.accounts = databaseBackend.getAccounts(); + if (!keepForegroundService() && databaseBackend.startTimeCountExceedsThreshold()) { + getPreferences().edit().putBoolean("keep_foreground_service",true).commit(); + Log.d(Config.LOGTAG,"number of restarts exceeds threshold. enabling foreground service"); + } + restoreFromDatabase(); getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contactObserver); @@ -894,6 +899,7 @@ public class XmppConnectionService extends Service { this.pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "XmppConnectionService"); + toggleForegroundService(); updateUnreadCountBadge(); toggleScreenEventReceiver(); @@ -940,17 +946,21 @@ public class XmppConnectionService extends Service { } public void toggleForegroundService() { - if (getPreferences().getBoolean("keep_foreground_service", false)) { + if (keepForegroundService()) { startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification()); } else { stopForeground(true); } } + private boolean keepForegroundService() { + return getPreferences().getBoolean("keep_foreground_service",false); + } + @Override public void onTaskRemoved(final Intent rootIntent) { super.onTaskRemoved(rootIntent); - if (!getPreferences().getBoolean("keep_foreground_service", false)) { + if (!keepForegroundService()) { this.logoutAndSave(false); } else { Log.d(Config.LOGTAG,"ignoring onTaskRemoved because foreground service is activated"); |