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