Skip to content
Snippets Groups Projects
Select Git revision
  • 0dd83be779bbb04ea8746fb34bc5e43e8f7fdb7f
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • release/201811
  • release/201808
  • wip/patches_poly_2017/cedryk_doucet/abderahmane_bouziane
  • releases/beta1
  • android/release_464
  • android/release_463
  • android/release_462
  • android/release_461
  • android/release_460
  • android/release_459
  • android/release_458
  • android/release_457
  • android/release_456
  • android/release_455
  • android/release_454
  • android/release_453
  • android/release_452
  • android/release_451
  • android/release_450
  • android/release_449
  • android/release_448
  • android/release_447
  • android/release_446
  • android/release_445
38 results

JamiJobService.kt

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    JamiJobService.kt 2.57 KiB
    /*
     *  Copyright (C) 2004-2023 Savoir-faire Linux Inc.
     *
     *  This program 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.
     *
     *  This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
     */
    package cx.ring.service
    
    import android.app.job.JobParameters
    import android.app.job.JobService
    import android.content.Intent
    import android.os.Handler
    import android.text.format.DateUtils
    import android.util.Log
    import androidx.core.content.ContextCompat
    import cx.ring.application.JamiApplication
    
    class JamiJobService : JobService() {
        override fun onStartJob(params: JobParameters): Boolean {
            if (params.jobId != JOB_ID) return false
            Log.w(TAG, "onStartJob() $params")
            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")
                    jobFinished(params, false)
                }, JOB_DURATION + 500)
            } catch (e: Exception) {
                Log.e(TAG, "onStartJob failed", e)
            }
            return true
        }
    
        override fun onStopJob(params: JobParameters): Boolean {
            Log.w(TAG, "onStopJob() $params")
            try {
                startService(Intent(SyncService.ACTION_STOP)
                    .setClass(this, SyncService::class.java))
            } catch (ignored: IllegalStateException) {
            } catch (e: Exception) {
                Log.e(TAG, "onStopJob failed", e)
            }
            return false
        }
    
        companion object {
            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 = 7 * DateUtils.SECOND_IN_MILLIS
            const val JOB_ID = 3905
        }
    }