android - 即使任务死亡,有什么方法可以将 AlarmManager 保留在 android 中?
问题描述
我正在使用 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, 0, 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, calendar.timeInMillis, p)
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, p)
}
}
工作广播.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>
解决方案
推荐阅读
- javascript - Google Sheets API v4 分享
- javascript - 谷歌地图在javascript中放大和缩小两次
- opencl - 在 OpenCL 上,我们可以假设连续写入是原子的吗?
- php - Symfony,在运行时更改数据库
- c# - HTTP 错误 500.52 - URL 重写模块错误。名称属性
- python - 整数值之间的条件前向填充
- laravel - 无法在 laravel 上使用 swagger 生成文档
- mysql - 动态数据透视表列mysql
- reactjs - 在 Firefox 中反应输入失去焦点
- javascript - 在将数组元素转换为字符串时附加逗号