Android 来自WakefulBroadcastReceiver的连续警告消息

Android 来自WakefulBroadcastReceiver的连续警告消息,android,alarmmanager,android-wake-lock,Android,Alarmmanager,Android Wake Lock,我使用报警管理器每5分钟获取一次触发器。 报警接收器扩展WakefulBroadcastReceiver,并在接收到报警触发器时,通过startWakefulService(上下文,服务)启动IntentService。在服务内部的onHandleIntent(intent intent)方法中接收到意图时,应用程序执行一些所需的操作,并在该方法结束时通过调用AlarmReceiver.completeWakefulIntent(intent)释放唤醒锁 我的应用程序运行正常,但在logcat中

我使用报警管理器每5分钟获取一次触发器。 报警接收器扩展
WakefulBroadcastReceiver
,并在接收到报警触发器时,通过
startWakefulService(上下文,服务)
启动IntentService。在服务内部的
onHandleIntent(intent intent)
方法中接收到意图时,应用程序执行一些所需的操作,并在该方法结束时通过调用
AlarmReceiver.completeWakefulIntent(intent)
释放唤醒锁

我的应用程序运行正常,但在logcat中,我看到了WakefulBroadcastReceiver发出的警告消息

Tag: WakefulBroadcastReceiver Warning message: No active wake lock id #1
每次触发时,这些警告信息都会持续出现,
#数字每次都会增加。

我想知道应用程序设置的警报是否存在一些问题,因为消息的数量正在逐渐增加。或者仅仅是因为wale锁不是由alarm manager创建的,而我的应用程序正试图通过
completeWakefulIntent

将其删除。很可能
startWakefulService
onHandleIntent
是在不同的进程中执行的。在这种情况下,调用static
AlarmReceiver.completeWakefulIntent
的行为将如同它工作一样,但由于在该进程空间中找不到实际的唤醒锁,您将收到该警告消息。

最有可能的是
startWakefulService
onHandleIntent
在不同的进程中执行。在这种情况下,调用static
AlarmReceiver.completeWakefulIntent
的行为将如同它工作一样,但由于在该进程空间中找不到实际的唤醒锁,因此您将收到该警告消息。

请确保在android清单中正确键入了唤醒锁权限。如果您忘记或键入错误,startWakefulService将启动该服务,但随后会自动失败。在log cat中,您不会看到任何明显的突出问题

在我的例子中,Android Studio已经自动完成了“WAKE_LOCK”,作为小写的“WAKE_LOCK”。服务确实启动了,但startWakefulService从未干净地返回,我通过日志记录验证了这一点。某种例外是加薪

public class FooBroadcastReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Fpp receiver fired. Starting bar service");

        Intent serviceIntent = new Intent(context, BarService.class);
        startWakefulService(context, serviceIntent);
        Log.d(TAG, "Started bar service"); // << never reached!
    }
公共类FooBroadcastReceiver扩展WakefulBroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Log.d(标签“Fpp接收器启动。启动酒吧服务”);
意向serviceIntent=新意向(上下文,BarService.class);
startWakefulService(上下文、serviceIntent);

Log.d(标记为“Started bar service”);//确保您在android清单中正确键入了WAKE_LOCK权限。如果您忘记或键入错误,则StartWake FulService将启动该服务,但随后会自动失败。您不会在日志猫中看到突出显示问题的任何明显内容

在我的例子中,Android Studio已经自动完成了“WAKE_LOCK”,作为小写的“WAKE_LOCK”。该服务确实启动了,但startWakefulService从未干净地返回,我通过日志记录进行了验证。某种异常正在增加

public class FooBroadcastReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Fpp receiver fired. Starting bar service");

        Intent serviceIntent = new Intent(context, BarService.class);
        startWakefulService(context, serviceIntent);
        Log.d(TAG, "Started bar service"); // << never reached!
    }
公共类FooBroadcastReceiver扩展WakefulBroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Log.d(标签“Fpp接收器启动。启动酒吧服务”);
意向serviceIntent=新意向(上下文,BarService.class);
startWakefulService(上下文、serviceIntent);
Log.d(标签“启动酒吧服务”)//