2011-05-23 52 views
3

这可能是一个愚蠢的问题,但是有没有一个规则说明意图额外必须被消费活动明确地删除,还是只有在回收Intent对象时才是真的?必须删除意向演员吗?

换句话说,如果我一直链到下一个活动做类似:

Intent i = new Intent(MyCurrentActivity.this, FooActivity.class); 
i.putExtra("first", "stringvalue"); 
i.putExtra("second", 69L); 
startActivity(i); 

然后,在FooActivity,我读他们回来了...

String first = getIntent().getStringExtra("first"); 
long second = getIntent().getLongExtra("second"); 

..我是否也必须明确地删除它们以避免意外污染未来活动的意图,或者从我抓住它们的那一刻起,我能否忘记它们甚至存在并继续前行?

我可以发誓我记得读过一些说我必须删除它们的东西,但我一直无法找到它,我怀疑它可能只适用于重用的意图对象。

+0

在JB中删除临时演员有​​问题。如果您在删除额外内容后返回活动,它仍然会被调用。有任何想法吗? TNX! – MSquare 2013-06-24 10:06:43

回答

2

如果您打算使用相同的Intent对象,但不需要(也不需要)额外功能,那么您可以将其删除。相反,如果你想用相同的额外参数来调用开始的同一个意图,那么保留它们。最后,如果物体将被破坏,谁在乎额外物品?

无论如何,我会决定打电话者的活动,而不是意图的接收者。

+0

根据这个答案和MSquare的评论(上面),看起来最安全的做法是仅仅离开Intent extras,让垃圾收集器处理它们。 – Bitbang3r 2013-06-28 18:23:19