【问题标题】:How to monitor the process of placing any Parcel data in to persistent storage如何监控将任何 Parcel 数据放入持久存储的过程
【发布时间】:2018-04-05 00:41:09
【问题描述】:

因为Parcel doc 这么说

Parcel 中任何数据的底层实现发生变化都可能导致旧数据不可读。

所以我想知道有没有办法监控这个过程,这样我们就可以防止将Parcel数据放到持久存储中。

另外,Serializable对象是否也有同样的问题,如果有,如何监控。

【问题讨论】:

    标签: android parcelable serializable parcel


    【解决方案1】:

    所以我想知道有没有办法监控这个过程,这样我们就可以防止将 Parcel 数据放到持久存储中。

    Parcel 永远不会写入持久存储。这就是除了Serializable 之外还有Parcelable 的一部分。

    Serializable 对象是否也有同样的问题

    当您尝试读取旧值时,Serializable 类中的更改可能会导致问题。

    如何监控

    由于您是将Serializable 对象写入磁盘的人,因此请自行监控。我想不出Android会在哪里自动将您的Serializable类写入磁盘。

    【讨论】:

    • 我测试了Serializable,当你更改成员类型时它会崩溃,其他情况,它可以正常工作,例如更改成员名称,删除或添加成员。
    • 遇到过故意将parcel写入持久化存储,比如Parcel parcel = Parcel.obtain(); object.writeToParcel(parcel, 0); contentValues.put("key", parcel.marshall());
    • @twlkyao:在你的后一个问题中编写代码的人违反了Parcel 合同。如果这是在某处的 AOSP 中,请提出问题。如果这是在您控制的应用程序中,请修复它。
    • 是的,这是在我们的应用程序中,我可以通过搜索 Parcel.obtain() 找到调用,marshall 或 unmarshall,我将添加一些方法尝试防止其他人这样做。
    猜你喜欢
    • 2017-04-26
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多