通过意向中引用的对象不执行序列化或Parcelable(Pass Object reference

2019-07-20 00:48发布

我知道类似的问题已经被问了多次。 我觉得我读了它。 但是,没有答案是适用的。

我需要经由意图通过复杂的对象(活动呼叫/广播)。 一切都在我的过程中完成的。 这就是为什么我认为没有理由给我写对象为流只是为了重新组装后,他们几毫秒。 我想通过我的应用程序通过我的对象引用。 有没有办法做到这一点。

由于我的应用程序将连续在同一事件中多次播出我不能依靠静态成员。 我需要exacly相同的对象为我播放。

这就是为什么我在想一个静态的“Referenceholder”,将接受一个对象,并返回标识此对象在它的内部列表,以便我可以通过.putExtras通过这个整数的整数。 但据我了解Java我不能从这个名单收拾这个对象后,它已被添加,因为多个侦听器可以在同样的对象interessted,我将不得不把它放在我的Referenceholder永远(假设一个线程可以在任何时候恢复 - 甚至2分钟后)。

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

Answer 1:

你的选择是相当清楚的:有没有办法在一个意图通过一个未marshallable对象(Parcelable,序列化)。 句号。

你也许能够做的就是通过东西是一个未marshallable对象的引用。 这个想法是,你会做一些路过一个关键的地图是关键,你有兴趣的合格值映射的顺序。 如果意图发送方和接收方的意图都可以访问的地图,你可以传达给联合国marshallable对象的引用。

我不明白,就是这样,为什么你认为静态成员是不是你想要的。 我猜想,静态地图,在自定义的应用程序对象,将是非常多的,你想要什么。 ......我怀疑,从约WeakHashMaps评论,你已经正是发现。

......除了没有什么,到目前为止你说解释了为什么你想使你的地图弱。 在您使用弱地图,看看软引用,以确保那不是你的意思。

祝您好运



Answer 2:

编辑:

忘了这个解决方案。 这是行不通的。 Android是应对您在.startActivity通过()的意图。 有没有办法让一个活动内的任何引用。 这是 - 在我看来 - 大BU ****牛逼我由谷歌。 你打电话给你的活动,并把你的对象的referneces在静态成员...

正如所提及般由G.布雷克美克,没有办法通过意图通过在Android的对象引用。 但你也许可以用在WeakReferences 。

关于这个话题非常外观极好aticle在这里找到: http://weblogs.java.net/blog/2006/05/04/understanding-weak-references

我到过这个问题,该解决方案: 是否有可能获得对象的引用计数?

那么,我基本上要做的就是:我会用意图作为一个密钥WeakHashMap中 ,并通过我的对象为值。 这似乎是适合作为重点,因为你投入的意图演员都将被序列化的唯一对象。 由于这一点,你只能传递每一个意向对象。 你可以实现你的胡亚蓉内的子类,可这个子类持有对象的一种投入,而不是地图。 但我仍然不知道,如果意图对象,一个接收器将得到的是,来电者创建,但我是这么认为的一样。 如果不是,我将编辑这个解决方案(也许有人可以清除了)。



文章来源: Pass Object reference within Intent without implementing Serializable or Parcelable