【问题标题】:Changing Parcelable structure between application updates在应用程序更新之间更改 Parcelable 结构
【发布时间】:2016-03-22 09:48:59
【问题描述】:

我有一个Parcelable 结构,我通过Context.sendBroadcast()Intent 内发送它,以便由某些应用程序的接收器进一步处理。

在我的应用程序的更新版本中,我更改了 Parcelable's 结构,因此我更改了某些字段的类型。

我想知道发送广播是否在应用程序更新之前被调用,它是否会以旧的Parcelables 结构保存在系统中的某个位置,所以我有机会在我的应用程序中进一步获取它,但有以下一些异常是因为结构不相关导致无法读取Parcelable

或者我错了,Android 以不同的方式处理这种情况?

【问题讨论】:

    标签: android broadcast parcelable parcel


    【解决方案1】:

    正如文档所说,不建议在进程之间发送 parcelable。

    例如,应用可能会使用 AlarmManager 类设置警报,并在警报意图上使用自定义 Parcelable。当警报响起时,系统会修改意图的 Bundle of extras 以添加重复计数。此修改可能会导致系统从附加组件中剥离自定义 Parcelable。反过来,这种剥离可能会导致应用在收到修改后的警报意图时崩溃,因为应用希望收到不再存在的额外数据。

    https://developer.android.com/guide/components/activities/parcelables-and-bundles

    因此,最好只将字符串 ID 保存到您的对象中。您可以从其他地方加载它,例如本地数据库。

    【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2021-04-10
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多