问题描述
我在 Android 10 的 AlarmManager 中遇到了问题。
低于要求,
- 我需要在某个事件发生后设置闹钟
- 这也应该在打盹模式下工作
这是我设置的闹钟代码
public void setAlarm(Context context,int duration) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context,StatusAlarm.class);
i.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
i.putExtra("triggerAtMillis",System.currentTimeMillis() + (1000 * 60 * geo_fencing_duration));
i.setAction("android.com.SAMPLE_ACTION");
PendingIntent pi = PendingIntent.getBroadcast(context,REQUEST_CODE,i,PendingIntent.FLAG_UPDATE_CURRENT);
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + (1000 * 60 * duration),pi); // 5 minutes
}
这是我的 BrodcastReceiver
@Override
public void onReceive(Context context,Intent intent)
{
Log.d(TAG,"Action: " + intent.getAction());
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"app:name");
wl.acquire();
//Do cloud call - Rest API
wl.release();
}
我发现没有触发警报。我无法理解这个问题。
我检查了警报转储系统。
以下是设置闹钟后和= 1618287337846时的输出
RTC_WAKEUP #0: Alarm{7871afc type 0 when 1618287337846 com.xxx.myapp}
tag=*walarm*:android.com.SAMPLE_ACTION
operation=PendingIntent{9a77585: PendingIntentRecord{fad993b com.xxx.myapp broadcastIntent}}
当实际触发时间已过且未触发警报时,我再次检查了 dumpsys 当 = 9223372036854775807 这很奇怪
ELAPSED_WAKEUP #1: Alarm{2b409da type 2 when 9223372036854775807 com.xxx.myapp}
tag=*walarm*:com.xxx.myapp/org.altbeacon.beacon.startup.StartupBroadcastReceiver
operation=PendingIntent{a44ce0b: PendingIntentRecord{2d089a2 com.xxx.myapp broadcastIntent}}
请帮我理解这个问题。我仍然对这种意想不到的行为感到困惑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)