如果设备已经清醒,onReceive是否会在BroadcastReceiver中为AlarmManager调用
问题描述:
我无法让BroadcastReceiver正常工作。 onReceive没有被调用。我没有使用服务。我在我的活动的onCreate方法中设置闹钟。我也使用RTC_WAKEUP。但是如果我的设备已经清醒了呢? onReceive会被调用吗?即使设备处于清醒状态,我也需要调用onReceiver。通常情况下,即使设备处于睡眠状态,我也需要调用接收器,但我也希望执行手动启动活动时接收器执行的代码。这里是我我开始我的报警:如果设备已经清醒,onReceive是否会在BroadcastReceiver中为AlarmManager调用
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>
答
但是,如果我的设备已经醒了吗? onReceive会被调用吗?
是的。
这里是我如何开始我报警:
您正在使用getActivity()
。该组件不是Activity
。这是一个BroadcastReceiver
。使用getBroadcast()
构建一个PendingIntent
,将触发BroadcastReceiver
。
在清单:
删除android:process="remote"
,因为你不需要它,它危害的浪费RAM中的用户。此外,删除android:exported="true"
,因为您不需要它,并且通过允许任何人触发BroadcastReceiver
来削弱安全性。