您如何序列化Android Intent?

问题描述

| Android Intents有一个方便的toURI()方法api文档似乎表明这是将Intent序列化为URI,然后将其解析回Intent的一种方法。不幸的是,在测试此功能时,我发现它并没有序列化所有额外功能,而只是原始类型(布尔,整数,长整型,浮点型,字符串型)。如果意图指定了任何Parcelable或数组附加项,则这些附加项将丢失。 在哪里(如果有的话)记录了此限制?有这种行为的明显原因(我可以想象使用Parcelables会遇到一些困难)吗?最重要的是,是否有推荐的方法来序列化和解析Intent? 我当前的实现只是将Intent组件(操作,类别,数据uri和Extras)写入SharedPreferences。此策略不支持Parcelables。     

解决方法

           Android Intents有一个方便的toURI()方法,API文档似乎表明这是将Intent序列化为URI,然后将其解析回Intent的一种方法。 并不是的。   在哪里(如果有的话)记录了此限制? 我完全不会期望ѭ0中会包含任何其他内容。这种
Uri
生成背后的意义是向您展示如何将
Uri
添加为网站上的链接,并且在这种情况下您不需要其他功能。
toURI()
未序列化。   最重要的是,是否有推荐的方法来序列化和解析Intent? 不能。特别地,根据定义,
Parcelable
不能序列化。   我当前的实现只是将Intent组件(操作,类别,数据uri和Extras)写入SharedPreferences。 这种方法简直就是奇怪。 使用数据库。如果您从小受到数据库的攻击,因此对数据库怀有极大的恐惧,请使用JSON,XML或
Serializable
/
ObjectOutputStream
序列化到文件。用
SharedPreferences
表示用户喜好。   此策略不支持Parcelables。 也不应。也不会。
Parcelable
用于将对象图转换为仅在运行中的设备中使用的存储块。它不是一个长期的持久性机制。