微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在Intent中传递Object引用,而不实现Serializable或Parcelable

我知道有多次问过类似的问题.我想我读了大部分内容.但没有一个答案适用.

我需要通过Intents(活动调用/广播)传递复杂的对象.一切都在我的过程中完成.这就是为什么我认为没有理由将我的对象写入Streams只是为了在几毫秒之后重新组装它们.我想通过我的应用程序传递我的对象引用.有没有办法做到这一点.

由于我的应用程序将连续多次广播相同的事件,所以我不能依赖静态成员.我需要为我播放的内容提供相同的对象.

这就是为什么我在考虑一个静态的“Referenceholder”,它将接受一个Object并返回一个整数,在它的内部列表中标识这个对象,所以我可以通过.putExtras传递这个整数.但据我所知,Java添加之后无法从此列表中清除此Object,因为多个Listener可以在同一个对象中进行interess,并且我必须将它保留在我的Referenceholder中(假设一个线程)可以在任何时间恢复 – 甚至2分钟后).

有任何想法吗?难道我做错了什么?或者我如何清理我的引用的任何想法(可能在几秒钟之后?这可能会导致崩溃,但它似乎比编写无代理组装和重新组装我的对象的代码更适用)

解决方法:

您的选择非常明确:无法在Intent中传递非可编组对象(Parcelable,Serializable).完全停止.

你可以做的是传递一些引用非可编组对象的东西.我们的想法是,您可以按照将密钥传递给地图的顺序执行某些操作,该地图将该密钥映射到您有兴趣传递的值.如果Intent发件人和目标收件人都可以访问映射,则可以传递对非可编组对象的引用.

我完全不明白为什么你认为静态成员不是你想要的.我猜想自定义Application对象中的静态映射几乎就是你想要的. ……我怀疑,从你对WeakHashMaps的评论中,你已经发现了这一点.

……除了你到目前为止所说的一切都没有解释为什么你想让你的地图变弱.在使用弱映射之前,请查看软引用,以确保这不是您的意思.

祝你好运

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐