【问题标题】:WakefulBrodcastReceiver / Alert does not ring (Wakelock? Process killed?)WakefulBrodcastReceiver / 警报不响(唤醒锁?进程被杀?)
【发布时间】:2016-03-27 17:19:42
【问题描述】:

我有一个应用程序,它应该是一个闹钟。如果我将警报时间设置为大约 5 分钟或 30 分钟,它会按原样响起,但如果我把它放在大约 4 小时后,它就不会响起,无论我的设备从未被触摸过(整晚),或者如果我使用定期(白天)。

在主要方法中我有这个Wackelock

PowerManager powman = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powman.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyWakelockTag");
wakeLock.acquire();

然后我像这样打电话给我的AlarmReceiver

Intent alarmIntent = new Intent(main.this, AlarmReceiver.class);
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(main.this, 8932, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, AlertDate.getTime(), alarmPendingIntent);

最后我的AlarmReceiver 看起来像这样:

public class AlarmReceiver extends WakefulBroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        main.Alert(context);
    }
}

我的清单在这里:

<uses-permission android:name="android.permission.WAKE_LOCK" />

...

<application

...

    <receiver
        android:name=".AlarmReceiver"
        android:permission="android.permission.WAKE_LOCK">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

</application>

所以最简单的问题是:为什么main.Alert(context); 在很长一段时间后没有被调用?进程是否可能被Android OS 杀死?

【问题讨论】:

  • 您是否有 WAKE_UP 权限来显示?并将 AlarmReceiver 声明为manifiest
  • 是的,我都有 :) 我已经在上面的帖子中添加了它

标签: java android process android-wake-lock


【解决方案1】:

@Pixel_95 main.Alert(context); 在做什么? 无论如何,PowerManager 需要在构造函数中为 FULL_WAKE_LOCK(不是 PARTIAL),或者类似的东西,但是当你使用 WakefullBroadcastReceiver 时,你需要调用completeWakefulIntent(intent); 才能唤醒设备,如果你这样做,你会'不需要 PowerManager 代码行。

【讨论】:

  • 现在我有 FULL_WAKE_LOCKcompleteWakefulIntent(intent): 但它仍然无法工作超过 3 小时...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 2015-05-12
  • 2015-05-14
  • 2011-09-13
相关资源
最近更新 更多