gpt4 book ai didi

android - 如何与 AlarmManager 一起启动通知?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:44 32 4
gpt4 key购买 nike

我想知道应该如何启动通知。创建通知不是我要问的,而是一种在后台启动它的方式,这样它就不会引人注目,用户可以做他们正在做的任何事情。它用于日历,确切地说是提醒。同样重要的是要注意我正在使用 AlarmManager

  1. 后台运行应该用什么方法。 BroadCastRecieverService

  2. 我发现的研究也提出了 AlarmManager 的问题。当应用程序被杀死或手机关闭时,闹钟也会响起。我还应该使用什么其他方法来确保通知一定会针对该事件提醒显示?

如果需要任何其他信息,请询问,我会这样做。提前致谢。

最佳答案

创建一个 broadcastreceiver 或 intentservice。然后……

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);


Date date = new Date(); //set this to some specific time
or Calendar calendar = Calendar.getInstance();

//set either of these to the correct date and time.

then
Intent intent = new Intent();
//set this to intent to your IntentService or BroadcastReceiver
//then...
PendingIntent alarmSender = PendingIntent.getService(context, requestCode, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
//or use PendingIntent.getBroadcast if you're gonna use a broadcast

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), mAlarmSender); // date.getTime to get millis if using Date directly.

如果您希望这些闹钟即使在手机重启时也能正常工作,请添加:

        <action android:name="android.intent.action.BOOT_COMPLETED"/>

作为 list 中 Receiver 的 intentfilter,并在 onReceive 中重新创建警报。

编辑

当您在您的应用程序中创建一个 BroadcastReceiver 时,它允许做听起来像的事情:在系统中接收广播。因此,例如,您可能会像这样使用一些 BroadcastReceiver:

public class MyAwesomeBroadcastReceiver extends BroadcastReceiver {

//since BroadcastReceiver is an abstract class, you must override the following:

public void onReceive(Context context, Intent intent) {
//this method gets called when this class receives a broadcast
}
}

要显式向此类发送广播,您可以在 list 中定义接收器,如下所示:

<receiver android:name="com.foo.bar.MyAwesomeBroadcastReceiver" android:enabled="true" android:exported="false">
<intent-filter>

<action android:name="SOME_AWESOME_TRIGGER_WORD"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>




</intent-filter>
</receiver>

在 list 中有这个给你两件事:你可以随时通过

Intent i = new Intent("SOME_AWESOME_TRIGGER_WORD");
sendBroadcast(intent);

此外,由于您已经告诉 android 您希望接收系统广播的 BOOT_COMPLETED 操作,因此当发生这种情况时,您的接收器也会被调用。

关于android - 如何与 AlarmManager 一起启动通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11355238/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com