微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使任务死了,有什么办法可以将AlarmManager保留在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,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 举报,一经查实,本站将立刻删除。