2

在我的应用程序中,我需要设置警报,并在状态栏中显示通知。我将预定事件存储在数据库中,并在通知出现时删除事件。

当我关闭设备并再次打开时。base 中的列表存在,但永远不会触发警报事件。当我关闭设备时,似乎挂起的事件被取消了。

如何防止这种情况?我需要在设备打开时显示通知,并且警报时间到了。

这就是我设置警报的方式:

    Intent intent = new Intent(activity, TimeAlarm.class);
    intent.putExtra(SHOW_NAME, showName);
    intent.putExtra(SHOW_START_TIME, showStartTime);
    intent.putExtra(CHANNEL_NAME, channelName);
    intent.putExtra(VIBRATION_ENABLED, isVibrate);
    intent.putExtra(SOUND_ENABLED, isSound);

    int alarmId = (int) System.currentTimeMillis();

    intent.putExtra(ALARM_ID, alarmId);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(activity,
            alarmId, intent, PendingIntent.FLAG_ONE_SHOT);

    am.set(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + delayMilis, pendingIntent);

在清单文件中,我只有这个:

 <receiver
        android:name="com.moleandroid.tvprogramgui.alarm.TimeAlarm"
 /receiver>

TimeAlarm 类是我的接收器,从那里我在状态栏中显示通知。

知道有什么问题吗?

4

1 回答 1

1

在这里,您需要做些什么来解决此问题。通常当设备关闭时,它会取消警报的所有pendingIntent,因此在设备再次打开时它不会触发。警报应用程序在内部执行的操作是当设备关闭/打开时,它将启动服务以注册事件

请参考此链接以在代码中实现关机和开机意图。因此,当设备开机时,将所有事件安排到 AlarmManager,我相信这会起作用

当用户关闭设备时,有什么方法可以接收通知?

于 2012-11-29T08:33:38.140 回答