JobScheduler/JobService通知Kotlin Android

JobScheduler/JobService通知Kotlin Android,android,kotlin,alarmmanager,android-jobscheduler,jobservice,Android,Kotlin,Alarmmanager,Android Jobscheduler,Jobservice,我希望我的通知在特定时间每隔几个小时弹出一次。我必须为此使用作业计划吗? 这是我的闹钟接收器 class AlarmReceiver: BroadcastReceiver() { companion object { const val ID = "CHANEL_ID" const val chanelName = "CHANEL_NAME" } override fun onReceive(context: Context?,

我希望我的通知在特定时间每隔几个小时弹出一次。我必须为此使用作业计划吗?

这是我的闹钟接收器

    class AlarmReceiver: BroadcastReceiver() {

companion object {
    const val ID = "CHANEL_ID"
    const val chanelName = "CHANEL_NAME"
}

override fun onReceive(context: Context?, intent: Intent?) {

    val manager = context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    val channelNotification: NotificationCompat.Builder = NotificationCompat.Builder (context, ID)
        .setContentTitle("Powiadomienie!")
        .setContentText("Weź tabletkę!")
        .setSmallIcon(R.drawable.ic_launcher_background)

    val channel = NotificationChannel(ID, chanelName, NotificationManager.IMPORTANCE_HIGH)

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        manager.createNotificationChannel(channel)
        manager.notify(1,channelNotification.build())
    }
}
这是我的主要活动

class MainActivity : AppCompatActivity(), TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener {

private var minute = 0
private var hour = 0
private var dayOfMonth = 0
private var month = 0
private var year = 0

private lateinit var alarmManager: AlarmManager
private lateinit var alarmIntent: PendingIntent


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmIntent = PendingIntent.getBroadcast(applicationContext, 0, Intent(applicationContext, AlarmReceiver::class.java), 0)

    btn.setOnClickListener {
        val dialog = MyTimePickerDialog()
        dialog.show(supportFragmentManager, "time_picker")
    }

    btnDate.setOnClickListener {
        val dialog = MyDatePickerDialog()
        dialog.show(supportFragmentManager, "date_picker")
    }

    btninfo.setOnClickListener {

        val date = Calendar.Builder()
            .setDate(year, month, dayOfMonth)
            .setTimeOfDay(hour, minute, 0)
            .build()

       Toast.makeText(applicationContext, "$year-${month+1}-$dayOfMonth//$hour:$minute",Toast.LENGTH_SHORT).show()
        alarmManager.set(AlarmManager.RTC_WAKEUP, date.timeInMillis, alarmIntent)
    }




}


override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
  this.minute = minute
    this.hour = hourOfDay
}

override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
    this.year = year
    this.month = month
    this.dayOfMonth = dayOfMonth
}


}
我的就业服务类

class MyJobService: JobService() {
    override fun onStartJob(p0: JobParameters?): Boolean {
        TODO("Not yet implemented")
    }

    override fun onStopJob(p0: JobParameters?): Boolean {
        TODO("Not yet implemented")
    }
}
我如何实现,以便不时弹出在不同类中创建的通知


感谢gelp

您可以使用WorkManager来完成此任务。你可以找到更多关于工作经理的信息。在那里你可能会得到很多博客和教程,因为你想完成的任务与此类似