0

我无法让我的 BroadcastReceiver 工作。onReceive 没有被调用。我没有使用服务。我在我的活动的 onCreate 方法中设置警报。我也在使用 RTC_WAKEUP。但是,如果我的设备已经唤醒了怎么办?无论如何都会调用 onReceive 吗?即使设备处于唤醒状态,我也希望调用 onReceiver。通常,即使设备处于睡眠状态,我也需要调用接收器,但我也想执行接收器在手动启动活动时执行的代码。这是我开始闹钟的方式:

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, ServiceStarter.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),  pi);

在清单中:

<receiver  android:process=":remote" android:name=".ServiceStarter" android:exported="true"></receiver>
4

1 回答 1

1

但是,如果我的设备已经唤醒了怎么办?无论如何都会调用 onReceive 吗?

是的。

这是我开始闹钟的方式:

您正在使用getActivity(). 该组件不是Activity. 它是一个BroadcastReceiver. 用于getBroadcast()构建PendingIntent将触发BroadcastReceiver.

在清单中:

删除android:process="remote",因为您不需要它,它会通过浪费 RAM 来伤害用户。此外,删除android:exported="true",因为您不需要它,它允许任何人触发您的BroadcastReceiver.

于 2013-04-20T11:52:22.320 回答