【问题标题】:Pass an Object with Intent using AlarmManager - receiver getting null object使用 AlarmManager 传递带有 Intent 的对象 - 接收者获取空对象
【发布时间】:2018-01-19 22:03:39
【问题描述】:

您好,我正在尝试使用以下代码在设置 AlarmManager 时附加一个对象,

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();
        }

在接收器类中

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

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

在“onReceive”中,getSerializableExtra 数据为空。但是,当我传递一个 String value 而不是一个对象时,它工作正常。 请帮我找出问题。

【问题讨论】:

  • Event 是您的自定义类吗?如果是这样,那么它必须由Serializable 实现。必须检查event 不应null
  • @Piyush:我正在序列化'(Serializable) 事件'并且该事件不是空对象。

标签: android alarmmanager serializable


【解决方案1】:

PendingIntent will break things like AlarmManager on Android 7.0+ 中使用自定义ParcelableSerializable 类和额外的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多