使用AlarmManager传递带有Intent的Object - 接收器获取null对象

时间:2017-08-11 11:38:55

标签: android alarmmanager serializable

您好我正在尝试使用以下代码

设置AlarmManager时附加一个Object
try {

           int when = (int)testDate.getTime();

            Intent intent1 = new Intent(mEventService, AlarmReceiver.class);
            Bundle bundle = new Bundle();
            bundle.putSerializable(Contants.NOTIFICATION_DATA, (Serializable) event);
            intent1.putExtras(bundle);

            PendingIntent sender = PendingIntent.getBroadcast(mEventService, (int)when, intent1, PendingIntent.FLAG_UPDATE_CURRENT); //192837

            // Get the AlarmManager service
            AlarmManager am = (AlarmManager) mEventService.getSystemService(mEventService.ALARM_SERVICE);
            am.setExact(AlarmManager.RTC_WAKEUP, when, sender);

        } catch (ParseException e) {
            e.printStackTrace();
        }

在Receiver类中

public class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
    public void onReceive(Context context, Intent intent) {

Event event = (Event) intent.getSerializableExtra(Contants.NOTIFICATION_DATA);
    }
}

在'onReceive'中,getSerializableExtra数据为空。但是,当我传递一个字符串值而不是一个对象时,它工作正常。 请帮助我找出问题。

1 个答案:

答案 0 :(得分:3)

Parcelable will break things like AlarmManager on Android 7.0+中使用自定义SerializablePendingIntent类以及其他内容。