繁体   English   中英

Android-带有Wakelock的警报无法从意图启动服务

[英]Android - Alarm with Wakelock not launching Service from intent

我正在编写一个应用程序,但是让我的Alarm BroadcastReceiver无法启动所需的意图时遇到了一些麻烦。 代码如下:

 public void onReceive(Context context, Intent intent) 
 {

     Log.d("Alarm:","Running WakeLock");

     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
     wl.acquire();
     WakeMe.wakelock = wl;

     Log.d("Alarm:","Running Intent (Service)");
     Intent i = new Intent(context, serviceCode.class);
     context.startService(i);

 }

 public void SetAlarm(Context context)
 {
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(context, Alarm.class);

     PendingIntent pi = PendingIntent.getService(context, 1, i, 0);
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000, pi); // Millisec * Second * Minute
     Log.d("Alarm:", "Alarm set to run every 1 minute/s");
 }

调用SetAlarm()时,代码将运行onReceive()并通过serviceCode类运行,它还会设置警报并每1分钟运行一次警报。 我发现的问题是,当警报触发并运行唤醒锁时,它没有启动serviceCode并一直运行。 相反,它只是忽略了新意图。

注意:唤醒锁在serviceCode末尾释放。

任何帮助将不胜感激

像您在此处所做的那样,将RTC_WAKEUP与服务PendingIntent一起使用是不可靠的。 而且,它与您的onReceive()方法无关。 如果希望在警报事件发生时使BroadcastReceiver获得控制,则需要使用广播PendingIntent

如果要使用_WAKEUP警报,强烈建议您使用WakefulBroadcastReceiver我的WakefulIntentService ,而不要手动滚动自己的WakeLock逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM