首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alarm + Notification:什么也没发生

Alarm + Notification:什么也没发生
EN

Stack Overflow用户
提问于 2013-03-07 23:28:08
回答 1查看 335关注 0票数 0

我正在尝试实现一个警报,它将在每天的同一时间显示一个通知。

下面是我在活动中调用的函数:

代码语言:javascript
复制
private void restartNotify() {
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    // Intent for our BroadcastReceiver 
    Intent intent = new Intent(this, AlarmReceiver.class);

    // PendingIntent for AlarmManager
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT );

    // In case we have already set up AlarmManager, we cancel.
    am.cancel(pendingIntent);



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

这是我的广播接收器类

代码语言:javascript
复制
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);   
    Notification notification = new Notification(R.drawable.icon_notif, context.getString(R.string.NotificationLaunchMssg), System.currentTimeMillis());

    // This is intent we want to launch when user clicks on the notification.
    Intent intentTL = new Intent(context, MyClass.class);

    notification.setLatestEventInfo(context, context.getString(R.string.NotificationTitle), context.getString(R.string.NotificationBody),               
    PendingIntent.getActivity(context, 0, intentTL, PendingIntent.FLAG_CANCEL_CURRENT));

    nm.notify(1, notification);

    //Here we set next notification, in day interval
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, pendingIntent); 
}
}

正如你在这段代码中看到的,我使用了一个测试值(+10000毫秒),因为我只是试图在我的应用程序启动10秒后触发警报。但是它不工作,什么也不显示。我不知道是警报出了问题,还是通知说什么都没发生。

你知道为什么吗?

谢谢你的帮忙

编辑:在AlarmReceiver方法中添加了一些测试代码后,发现这些代码从未运行过。所以我可能没有正确地调用它,有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 00:25:03

不要使用此方法尝试setInexactRepeating(...)或setRepeating(...)而不是。为什么每次接收到意图时,你都要给BroadcastReceiver额外的工作来设置警报呢?

下面是一小段代码:

代码语言:javascript
复制
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            0, 10000, pendingIntent);
// The pending intent will the same as yours. 10000 is the 
// interval for between consecutive alarms

正如azertiti在评论中提到的那样,“当它注册的时候,那个时间已经是过去了。”因此使用0或System.currentTimeMillis()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15275049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档