Во время отладки приложения для меня очень часто останавливаться на точке останова и оценивать выражение (например, запускать код, такой как students.filter { it.age >= 18 }
). Я не только привык делать это, но у меня до сих пор не было проблем с этим.
Однако у меня возникли некоторые проблемы при попытке отфильтровать список во время отладки. Я имею в виду «несколько», потому что ошибки, с которыми я столкнулся, начали изменяться.
Сначала я застрял с сообщением Evaluating...
при попытке выполнить инструкцию, которая не выполнялась. Инструкция была что-то вроде:
foo.bar.filter { it.id.toLowerCase() == "someId" }
Представьте foo
как список (kotlin.collections.List
) с 84 элементами, bar
как объект и id
как строку.
У меня также была проблема при отладке, когда при попытке проанализировать свойства переменной я застрял с сообщением Collecting data...
Я подумал, что проблема может быть в моем компьютере или мобильном телефоне ( память, процессор ...), поэтому я перезапустил их обоих, но проблема осталась. Я не думаю, что это аппаратная проблема, потому что у меня есть хороший ноутбук (i7, с 16 Гб оперативной памяти и SDD) и смартфон (Note 9). Я также изменил кабель, который я использовал, на всякий случай. Я подумал, что это может быть моя Android Studio не в актуальном состоянии (это была версия 3.5.1), поэтому я обновил ее до версии 3.6.3, но проблема также не исчезла.
Я попытался использовать эмулятор, но я начал получать следующую ошибку:
com.sun.jdi.internalexception: unexpected jdwp error: 23
И в какой-то момент я получил эту другую ошибку:
object has been collected
Я уверен, что моя проблема не связана с G C потому что, если я просто оцениваю свою переменную списка, а не пытаюсь ее отфильтровать, она работает. Это также работает, когда я пытаюсь оценить одно из его свойств (например, foo.bar
).
Я разговаривал с другими android разработчиками, но единственная помощь, которую я мог получить, это "попытаться перезапустить android студия ".