В настоящее время я тестирую JobScheduler, я вызываю startServer () из действия, я думаю, что система может вызывать Log.e("cw","OK")
каждые 5 секунд, но мне не удалось, что не так с моим кодом?
1: следующий код автоматически конвертируется из Java в Android Studio 3.0, я думаю, что это не очень хороший код Kotlin, не могли бы вы это исправить?
2: мне нужно запустить службу перед вызовом mJobScheduler.schedule(jobInfo)
?
val startServiceIntent = Intent(this, ScheduledJobService::class.java)
startService(startServiceIntent)
3: Будет ли система вызывать Log.e("cw","OK")
каждые 5 секунд, даже если я закончу приложение?
Код
private fun startServer(){
Log.e("cw","Start Server")
val mJobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
val jobInfo = JobInfo.Builder(123, ComponentName(packageName, ScheduledJobService::class.java!!.getName()))
.setPeriodic(5000)
.build()
mJobScheduler.schedule(jobInfo)
}
private fun CancelServer(){
Log.e("cw","Stop Server")
val mJobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
mJobScheduler.cancelAll()
}
class ScheduledJobService : JobService() {
override fun onStartJob(params: JobParameters): Boolean {
Log.e("cw","Start")
Thread(Runnable { completeJob(params) }).start()
return true
}
override fun onStopJob(params: JobParameters): Boolean {
Log.e("cw","Stop")
return false
}
fun completeJob(parameters: JobParameters) {
Log.e("cw","OK")
jobFinished(parameters, false)
}
}
AndroidManifest.xml
<service
android:name="bll.ScheduledJobService"
android:permission="android.permission.BIND_JOB_SERVICE">
</service>