获得意图后是否应该清除bundle getExtra?

时间:2018-10-14 04:55:47

标签: android android-intent

我正在尝试解决What to do on TransactionTooLargeException中描述的TransactionTooLargeExeption

我们没有以任何有意义的方式使用onSaveInstanceState

启动意图时,我们正在传递额外的数据,这大约是10-20k的数据。

打开活动约30次后,应用程序崩溃。

我正在推测多余的数据会堆积并使应用程序崩溃,并考虑在接收活动中获得多余的数据后再做getIntent().removeExtra("data")

这通常是必须删除收到的意图吗?

1 个答案:

答案 0 :(得分:0)

这是getExtras()方法中的Source code

public Bundle getExtras() {

   return (mExtras != null)
        ? new Bundle(mExtras)
        : null;
}

如您所见,每次调用getExtras()时,它都会创建数据的副本(如果您的数据太大)

因此,我建议您在收到Extra之后将其删除,以便释放内存,并通过使用removeExtra()避免此类异常,如前所述。