问题描述
我正在使用AlarmManager制作警报应用程序。问题是,如果我在任务上终止了该应用程序,则AlarmManager无法正常工作。我该如何解决?
MainAtivity.kt
fun scheduleAlarm(context: Context) {
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val i = Intent(context,Workbroadcast::class.java)
val calendar: Calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.set(Calendar.HOUR_OF_DAY,hour)
calendar.set(Calendar.MINUTE,minute)
calendar.set(Calendar.SECOND,0)
calendar.set(Calendar.MILLISECOND,0)
i.putExtra("trigger",calendar.timeInMillis)
val p = PendingIntent.getbroadcast(context,i,PendingIntent.FLAG_UPDATE_CURRENT)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,calendar.timeInMillis,p)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP,p)
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP,p)
}
}
Workbroadcast.kt
class Workbroadcast : broadcastReceiver() {
override fun onReceive(context: Context,intent: Intent) {
val sdf = SimpleDateFormat("hh:mm:ss",Locale.getDefault())
val trigger = intent.getLongExtra("trigger",0)
val notification = WorkNotification.sendNotification(context,sdf.format(trigger))
val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as notificationmanager
manager.notify(0,notification)
}
}
AndroidManifest.xml
<receiver
android:name=".Workbroadcast"
android:enabled="true" >
</receiver>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)