Должен ли я очистить пакет getExtra после получения намерения? - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь решить TransactionTooLargeExeption, описанный в Что делать с TransactionTooLargeException

Мы не используем onSaveInstanceState каким-либо существенным образом.

Мы передаем дополнительные данные при запуске намерения, что составляет около 10-20 КБ данных.

И приложение аварийно завершает работу после открытия действия примерно 30 раз.

Я предполагаю, что дополнительные данные складываются и вылетает приложение, и думаю сделать getIntent().removeExtra("data") после того, как я получу дополнительные данные впринимающая деятельность.

Это обычно - необходимость удалить полученное намерение?

1 Ответ

0 голосов
/ 14 октября 2018

Вот Исходный код из getExtras() Метод

public Bundle getExtras() {

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

Как видите, каждый раз, когда вы вызываете getExtras (), он создает копию ваших данных (в вашем случае ваши данные слишком велики)

Итак, я предлагаю вам удалить Extra после получения его, чтобы вы могли освободить свою память и избежать такого исключения, используя removeExtra() в качествеупомянутый ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...