1

を開発しようとしJobSchedulerていますが、アプリがシステムによって強制終了されたときに、アプリに 1 分ごとに何かを実行させたいと考えています。

AndroidManifest.xml

<service
    android:name=".BaiduPush.BaiduJobService"
    android:enabled="true"
    android:permission="android.permission.BIND_JOB_SERVICE"/>

主な活動

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = DataBindingUtil.setContentView(this, R.layout.activity_main2)


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            startJobService()
        }
}

private fun startJobService() {
        Log.d(TAG,"startBaiduJobService")
        val JOB = 10
        val jobScheler = getSystemService((Context.JOB_SCHEDULER_SERVICE)) as JobScheduler
        val jobinfo = JobInfo.Builder(JOB, ComponentName(packageName,BaiduJobService::class.java.name))
                //.setPeriodic(AlarmManager.INTERVAL_FIFTEEN_MINUTES)
                .setOverrideDeadline(60000)
                .setPersisted(true)
                .build()

        jobScheler.schedule(jobinfo)
    }

バイドゥジョブサービス

class BaiduJobService : JobService() {

    val TAG = "BaiduJobService"

    override fun onStartJob(params: JobParameters?): Boolean {
        Log.d(TAG,"BaiduJobService onStartJob")
        return true
    }
    override fun onStopJob(params: JobParameters?): Boolean {
        return false
    }

}

を使用する場合setPeriodic(AlarmManager.INTERVAL_FIFTEEN_MINUTES)。はonStartJob呼び出されていません。

を使用する場合setOverrideDeadline(60000)onStartJob最初に一度だけのショー。

しかし、BaiduJobService時間切れになっても呼び出されないようです。

私は何かを逃しましたか?前もって感謝します。

4

1 に答える 1