gpt4 book ai didi

java - WakefulBrodcastReceiver/Alert 不响(Wakelock?进程被杀死?)

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:46 24 4
gpt4 key购买 nike

我有一个应用程序应该是闹钟。如果我将警报时间设置为大约 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);
}
}

我的 list 在这里:

<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 操作系统杀死?

最佳答案

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

关于java - WakefulBrodcastReceiver/Alert 不响(Wakelock?进程被杀死?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com