Do Intent extras have to be removed?

怎甘沉沦 提交于 2019-12-23 17:28:07

问题


This might be a stupid question, but is there a rule that states that intent extras have to be explicitly removed by the consuming activity, or is that only true if you're recycling Intent objects?

Put another way, if I always chain to the next activity by doing something like:

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

then, in FooActivity, I read them back out...

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

... do I have to also explicitly remove them to avoid accidentally polluting a future activity's intent, or from the moment I finish grabbing them, can I just forget they even exist and move on?

I could swear I remember reading something that said I had to remove them, but I haven't been able to find it again, and I'm suspecting that it might only apply to reused intent objects.


回答1:


If you're planning to use the same Intent object but do not need (nor want) the extras, then you may remove them. If, instead, you want to call the start the same intent with the same extras, then keep them. Lastly, if the object is going to be destroyed, who cares about the extras?

In any case, I would decide on the caller activity, not on the receiver of the intent.



来源:https://stackoverflow.com/questions/6100570/do-intent-extras-have-to-be-removed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!