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来完成此任务。你可以找到更多关于工作经理的信息。在那里你可能会得到很多博客和教程,因为你想完成的任务与此类似