问题描述
|
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
用于将对象图转换为仅在运行中的设备中使用的存储块。它不是一个长期的持久性机制。