From c2fe4b3a052d7ee6cd82c1951c7b712d3b28034b Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 15 Jan 2017 11:31:17 +0100 Subject: don't start backup at startup if there is a scheduled pending intent --- .../messenger/services/XmppConnectionService.java | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/main/java/de/pixart') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index c99888bde..487a10045 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1118,6 +1118,8 @@ public class XmppConnectionService extends Service { } //start export log service every day at given time ScheduleAutomaticExport(); + // cancel scheduled exporter + CancelAutomaticExport(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { registerReceiver(this.mEventReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); } @@ -1142,7 +1144,7 @@ public class XmppConnectionService extends Service { fileObserver.stopWatching(); super.onDestroy(); // cancel scheduled exporter - CancelAutomaticExport(); + CancelAutomaticExport(true); } public void toggleScreenEventReceiver() { @@ -3884,6 +3886,13 @@ public class XmppConnectionService extends Service { } public void ScheduleAutomaticExport() { + Intent intent = new Intent(this, AlarmReceiver.class); + final PendingIntent ScheduleExportIntent = PendingIntent.getBroadcast(this, AlarmReceiver.SCHEDULE_ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); + // don't start export when app is restarted and an intent is already created + if (ScheduleExportIntent != null) { + Log.d(Config.LOGTAG, "Schedule automatic export logs. There is a pending intent " + ScheduleExportIntent.toString()); + return; + } //start export log service every day at given time if (Config.ExportLogs) { if (Config.ExportLogs_Hour >= 0 && Config.ExportLogs_Hour <= 23 && Config.ExportLogs_Minute >= 0 && Config.ExportLogs_Minute <= 59) { @@ -3892,20 +3901,18 @@ public class XmppConnectionService extends Service { calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, Config.ExportLogs_Hour); calendar.set(Calendar.MINUTE, Config.ExportLogs_Minute); - Intent intent = new Intent(this, AlarmReceiver.class); intent.setAction("exportlogs"); - final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmReceiver.SCHEDULE_ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); - ((AlarmManager) getSystemService(ALARM_SERVICE)).setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); + ((AlarmManager) getSystemService(ALARM_SERVICE)).setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, ScheduleExportIntent); } } } - public void CancelAutomaticExport() { - if (Config.ExportLogs) { + public void CancelAutomaticExport(boolean force) { + if (!Config.ExportLogs || force) { Log.d(Config.LOGTAG, "Cancel scheduled automatic export"); Intent intent = new Intent(this, AlarmReceiver.class); - final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmReceiver.SCHEDULE_ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); - ((AlarmManager) this.getSystemService(ALARM_SERVICE)).cancel(pendingIntent); + final PendingIntent ScheduleExportIntent = PendingIntent.getBroadcast(this, AlarmReceiver.SCHEDULE_ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); + ((AlarmManager) this.getSystemService(ALARM_SERVICE)).cancel(ScheduleExportIntent); } } -- cgit v1.2.3