Android 使用WakefulIntentService调度多个警报

Android 使用WakefulIntentService调度多个警报,android,commonsware-cwac,Android,Commonsware Cwac,我正试图安排几个闹钟,以便在twitter上发布帖子。我不确定它的用法,因为我得到了一个NullPointerException 我有一个帖子列表,我想把它们发布到twitter上,所以我就是这么做的。 在WakefulIntentService类的ScheduleAllarms方法中,我有一个for循环,循环遍历posts列表并向putExtra方法添加post对象: public static void scheduleAlarms(AlarmListener listener, Conte

我正试图安排几个闹钟,以便在twitter上发布帖子。我不确定它的用法,因为我得到了一个NullPointerException

我有一个帖子列表,我想把它们发布到twitter上,所以我就是这么做的。 在WakefulIntentService类的ScheduleAllarms方法中,我有一个for循环,循环遍历posts列表并向putExtra方法添加post对象:

public static void scheduleAlarms(AlarmListener listener, Context ctxt,
        boolean force) {
    SharedPreferences prefs = ctxt.getSharedPreferences(NAME, 0);
    long lastAlarm = prefs.getLong(LAST_ALARM, 0);

    if (lastAlarm == 0
            || force
            || (System.currentTimeMillis() > lastAlarm && System
                    .currentTimeMillis() - lastAlarm > listener.getMaxAge())) {
        AlarmManager mgr = (AlarmManager) ctxt
                .getSystemService(Context.ALARM_SERVICE);
        for (Iterator<Post> iterator = AlarmActivity.posts.iterator(); iterator
                .hasNext();) {
            Post post = (Post) iterator.next();

            Intent i = new Intent(ctxt, AlarmReceiver.class);
            i.putExtra("post", post);
            PendingIntent pi = PendingIntent.getBroadcast(ctxt,
                    (int) post.getId(), i, 0);
            listener.scheduleAlarms(mgr, pi, ctxt);
        }

    }
}
这是我想要实现的正确方式吗

提前谢谢

NullPointerException声明intent.getParcelableExtra(“post”)为null

我的猜测是,您的
BroadcastReceiver
没有在调用
sendWakefulWork()
的过程中,将您的
post
额外转发到服务

这是我想要实现的正确方式吗

可能不会,因为您将只发送一篇帖子,而忽略所有其他帖子,而且如果用户关闭或重新启动设备,您甚至无法正确执行此操作


将一个定时报警与一个
pendingent
一起使用。因为您的帖子需要在持久数据存储中,所以让
WakefulIntentService
加载要从数据存储发送的帖子。从
PendingEvent
中删除所有额外的内容,因为它们不再需要,并且在断电或重新启动事件时无法轻易重新配置。

请检查与
NullPointerException
关联的Java堆栈跟踪。您好,Commonware,NullPointerException声明了该意图。getParcelableExtra(“post”)是空的。我真的不知道如何在一个列表中设置几个警报。非常感谢,我将尝试你的建议。只需再问一个问题。我在WakefulIntentService中如何/在何处从列表中加载帖子?@pindleskin:“我在WakefulIntentService中如何/在何处从列表中加载帖子?”——正如我所写,“既然您的帖子需要在持久数据存储中,让
WakefulIntentService
加载要从数据存储中发送的帖子”。好的,明白了,即,来自共享的首选项。现在唯一的问题是我不能把所有的帖子都连续发布,它们之间一定有15分钟的间隔。看来我无法让它工作。适用于单个警报,但我无法满足我的需求。
@Override
protected void doWakefulWork(Intent intent) {
    Log.i("AppService", "I'm awake! I'm awake! (yawn)");
    Post post = intent.getParcelableExtra("post");
    System.out.println("- " + post.getPost());
}