【问题标题】:Do Intent extras have to be removed?是否必须删除 Intent 附加项?
【发布时间】:2011-05-23 17:17:12
【问题描述】:

这可能是一个愚蠢的问题,但是是否有一条规则规定必须由消费活动显式删除 Intent Extras,或者只有在回收 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");

...我是否还必须明确删除它们以避免意外污染未来活动的意图,或者从我完成抓取它们的那一刻起,我可以忘记它们甚至存在并继续前进吗?

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

【问题讨论】:

  • 删除 JB 中的附加功能有问题。如果您在删除额外内容后返回活动,它仍会被调用。有任何想法吗? Tnx!

标签: android android-intent extra


【解决方案1】:

如果您打算使用相同的 Intent 对象但不需要(也不想要)额外的,那么您可以删除它们。相反,如果您想用相同的附加功能调用启动相同的意图,则保留它们。最后,如果对象要被销毁,谁在乎额外的东西?

在任何情况下,我都会决定调用者的活动,而不是意图的接收者。

【讨论】:

  • 鉴于此答案和 MSquare 的评论(上图),看起来最安全的做法是不理会 Intent 额外内容,让垃圾收集器处理它们。
猜你喜欢
  • 2014-06-15
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 2018-11-24
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多