如果应用处于打盹模式(最多30秒),我试图显示时间紧迫的通知,无法等待15分钟或更长时间。我的代码在Android M中运行良好,但在Android O中,我的额外代码为空。
Intent notificationDataIntent = new Intent("com.action.crymyselftosleep");
notificationDataIntent.putExtra(Config.RECEIVER_TEST_EXTRA_DATA, data));
PendingIntent notificationIntent = PendingIntent.getBroadcast(context, 12345, notificationDataIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, notificationIntent);
} else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, notificationIntent);
} else {
context.sendBroadcast(notificationDataIntent);
}
在接收方:
public void onReceive(Context context, Intent intent) {
SomeData data = intent.getParcelableExtra(Config.RECEIVER_TEST_EXTRA_DATA);
}
在运行Android M的设备上,这可以正常工作,SomeData正如预期的那样,但在运行Android O的两台设备上,SomeData为空。
为什么?我怎样才能使它发挥作用?