Я страдаю этой проблемой в течение нескольких месяцев и месяцев (но теперь я настройку производительности). Тем не менее, мне теперь отчаянно нужно знать, почему мой адаптер чувствует, что нужно запустить bindView
до 4 раз на записи.Пользовательский адаптер курсора, вызывающий bindView несколько раз
У меня есть пользовательский адаптер курсора, который заполняет gridview.
Некоторые отладки, чтобы показать, что происходит:
03-08 14:46:47.980: I/AdapterCursorGrid(20724): newView()
03-08 14:46:48.470: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:48.570: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:48.570: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:48.600: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:48.690: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:49.490: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:49.501: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:49.501: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:49.521: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:49.521: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:50.320: I/AdapterCursorGrid(20724): newView()
03-08 14:46:51.170: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:51.180: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.180: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:51.180: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:51.190: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:51.190: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.190: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:51.200: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:51.870: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:51.896: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.896: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:51.900: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:51.900: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:51.900: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.900: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:51.900: D/AdapterCursorGrid(20724): bindView() Picture creation...
В «Аватар пусто ...» и «Создание фото ...» просто отлаживать, что говорит мне, что обработка и обновление 2 конкретных ImageView
сек ,
Почему o почему bindView
работает так много раз? Каковы причины этого и что я могу сделать, чтобы решить эту проблему?
Логически говоря, я ожидаю, что bindView
будет работать один раз (и один раз при каждом обновлении адаптера), я ошибаюсь, думая об этом?
Независимо от «создания изображения» должна * не * быть на главном потоке приложения. 'bindView()' должен возвращаться менее чем за 1 мс на 'GridView', независимо от того, считаете ли вы, что его называют слишком много раз по другим причинам. ** Расходы ~ 600 мс в «Создание картинки» очень плохие **. Даже если 'bindView()' вызывается только один раз на ячейку, он будет называться MxN раз (M строк, N столбцов), когда «GridView» изначально заполняется, а это означает, что * ваш пользовательский интерфейс заморожен в течение нескольких секунд * с самого начала , – CommonsWare
@CommonsWare Да, я достиг этого с задачей aync. – HGPB