2014-10-13 1 views
3

Я получаю некоторые отчеты о сбоях от устройств, использующих андроид L предварительного просмотра, вопросперерабатывается дважды! Продолжительность Exception в TypedArray

Caused by: java.lang.RuntimeException: [17, ...... ] recycled twice! 
     at android.content.res.TypedArray.recycle(TypedArray.java:869) 

Не могу увидеть код, потому что Android L еще не доступен, Как я могу проверить, если TypedArray уже переработан?

На самом деле я нашел, что вызов на повторный вызов вызывается дважды, но так или иначе, зачем бросать исключение, теперь разбивая потенциально старый рабочий код (даже если неправильно перезвонить дважды).

+1

Вы заметили изменение документации в _TypedArray.recycle() _? Он изменился; «Перезагрузите TypedArray, чтобы повторно использовать более поздний вызывающий. После вызова этой функции вы больше никогда не будете касаться типизированного массива». – harism

ответ

8

Из-за изменений в массиве TypedArray в L, вызвав TypedArray.recycle() дважды или вызов getter в TypedArray после recycle() небезопасно. Это никогда не было правильным приложением к приложению, и до L может возникнуть тонкие ошибки.

Смежные вопросы