Я хочу, чтобы JobScheduler проверял, подключен ли Интернет в реальном времени или нет.
Я установил JobScheduleerService
в Manifests.xml
...
<service
android:name=".service.JobSchedulerService"
android:enabled="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
...
И это класс JobSchedulerService
на данный момент, он запускается только один раз.
class JobSchedulerService : JobService() {
override fun onStartJob(params: JobParameters): Boolean {
Log.d("scheduler", "onStartJob(): ${params.jobId}")
jobFinished(params, false) // I've tried it with true(wantsReschedule) but didn't work. still works once.
return false // also I've set it to true, but no repeatition.
}
override fun onStopJob(params: JobParameters): Boolean {
Log.d("scheduler", "onStopJob(): ${params.jobId}")
return false
}
}
Я думаю, что он должен запускаться каждые 2 секунды, как я установил ниже.
Это MainActivity.kt
private var mJobScheduler: JobScheduler? = null
...
private fun runJobScheduler() {
Log.d("scheduler", "runJobScheduler()")
mJobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
val jobInfo = JobInfo.Builder(1, ComponentName(packageName, JobSchedulerService::class.java.name))
.setMinimumLatency(2000) // 2 seconds.
.build()
if (mJobScheduler == null || mJobScheduler!!.schedule(jobInfo) <= 0) {
Toast.makeText(this@MainActivity, "JobScheduler: Something went wrong", Toast.LENGTH_SHORT).show()
} else {
mJobScheduler!!.schedule(jobInfo) // Job is scheduled.
}
}
Я хотел бы создать JobScheduler, который проверяет, подключена или отключена сеть мобильного телефона (WIFI, 3G, LTE и т. Д.). И уведомить пользователя диалоговым окном.
Я думал, это срабатывает только один раз. Итак, я реализовал этот метод для проверки, работает он или нет.
private fun isJobIdRunning(context: Context, jobId: Int): Boolean {
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
for (jobInfo in jobScheduler.allPendingJobs) {
if (jobInfo.id == jobId) {
return true
}
}
return false
}
Однако результат тот же. Он запускается только один раз.
И я не знаю, связано ли это, но я тоже получаю эти сообщения (не ошибка, не предупреждение).