From 0dd83be779bbb04ea8746fb34bc5e43e8f7fdb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Fri, 1 Dec 2023 11:16:57 -0500 Subject: [PATCH] JamiJobService: use EXTRA_TIMEOUT to manage service timeout Change-Id: Iaf6504c2aab085c9f6ed5d7fd631b8276ee3ffc3 --- .../java/cx/ring/service/JamiJobService.kt | 11 ++++------ .../main/java/cx/ring/service/SyncService.kt | 22 ++++++++++++------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/jami-android/app/src/main/java/cx/ring/service/JamiJobService.kt b/jami-android/app/src/main/java/cx/ring/service/JamiJobService.kt index d55978dc6..0ee1b1eb5 100644 --- a/jami-android/app/src/main/java/cx/ring/service/JamiJobService.kt +++ b/jami-android/app/src/main/java/cx/ring/service/JamiJobService.kt @@ -32,19 +32,16 @@ class JamiJobService : JobService() { try { try { ContextCompat.startForegroundService(this, Intent(SyncService.ACTION_START) + .putExtra(SyncService.EXTRA_TIMEOUT, JOB_DURATION) .setClass(this, SyncService::class.java)) } catch (e: IllegalStateException) { Log.e(TAG, "Error starting service", e) } + JamiApplication.instance?.startDaemon(this) Handler().postDelayed({ Log.w(TAG, "jobFinished() $params") - try { - startService(Intent(SyncService.ACTION_STOP).setClass(this, SyncService::class.java)) - } catch (ignored: IllegalStateException) { - } jobFinished(params, false) - }, JOB_DURATION) - JamiApplication.instance?.startDaemon(this) + }, JOB_DURATION + 500) } catch (e: Exception) { Log.e(TAG, "onStartJob failed", e) } @@ -67,7 +64,7 @@ class JamiJobService : JobService() { private val TAG = JamiJobService::class.java.name const val JOB_INTERVAL = 12 * DateUtils.HOUR_IN_MILLIS const val JOB_FLEX = 60 * DateUtils.MINUTE_IN_MILLIS - const val JOB_DURATION = 10 * DateUtils.SECOND_IN_MILLIS + const val JOB_DURATION = 7 * DateUtils.SECOND_IN_MILLIS const val JOB_ID = 3905 } } \ No newline at end of file diff --git a/jami-android/app/src/main/java/cx/ring/service/SyncService.kt b/jami-android/app/src/main/java/cx/ring/service/SyncService.kt index 810128c9d..a6d815590 100644 --- a/jami-android/app/src/main/java/cx/ring/service/SyncService.kt +++ b/jami-android/app/src/main/java/cx/ring/service/SyncService.kt @@ -50,9 +50,11 @@ class SyncService : Service() { if (notification == null) { val deleteIntent = Intent(ACTION_STOP) .setClass(applicationContext, SyncService::class.java) + val contentIntent = Intent(Intent.ACTION_VIEW) .setClass(applicationContext, HomeActivity::class.java) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + notification = NotificationCompat.Builder(this, NotificationServiceImpl.NOTIF_CHANNEL_SYNC) .setContentTitle(getString(R.string.notif_sync_title)) .setPriority(NotificationCompat.PRIORITY_DEFAULT) @@ -77,21 +79,25 @@ class SyncService : Service() { val timeout = intent.getLongExtra(EXTRA_TIMEOUT, -1) if (timeout > 0) { Handler().postDelayed({ - try { - startService(Intent(ACTION_STOP).setClass(applicationContext, SyncService::class.java)) - } catch (ignored: IllegalStateException) { - } + stop() }, timeout) } } else if (ACTION_STOP == action) { - serviceUsers-- - if (serviceUsers == 0) { + stop() + } + return START_NOT_STICKY + } + + private fun stop() { + serviceUsers-- + if (serviceUsers == 0) { + try { stopForeground(true) stopSelf() - notification = null + } catch (ignored: IllegalStateException) { } + notification = null } - return START_NOT_STICKY } override fun onBind(intent: Intent): IBinder? = null -- GitLab