Подтвердить что ты не робот

Почему getCount так много раз вызывается в PagerAdapter?

Сегодня я заметил, что PagerAdapter получает большое количество раз. Я подсчитал 393 при медленном прокрутке страниц. Я видел этот вопрос, но на самом деле это не дало мне хорошего ответа.

  • Это нормальное поведение
  • Если да, почему так часто вызывается метод getCount?

Чтобы быть ясным, я ищу более обширный ответ, чем тот, который содержится в предоставленном вопросе. Я также понимаю, что мне нужно держать его как можно быстрее и что я не могу контролировать, как он называется, но здесь не вопрос.

4b9b3361

Ответ 1

Как вы заключили, он много используется в onTouchEvent. OnTouchEvent вызывается всякий раз, когда вы взаимодействуете с экраном, то есть касаетесь перемещения и отпускания событий. Перемещение только одного пикселя приведет к потенциальному вызову этого метода.

Объяснять нечего, это именно то, как оно реализовано. Обычно adapter.getCount реализуется с помощью чего-то вроде List.getSize или Cursor.getCount. И имеет почти нулевые накладные расходы. Если это проблема, оптимизируйте метод ListAdapter.getCount, кешируйте счет или что-то в этом роде. Делайте только сложные вещи там, когда это необходимо, и кешируйте результат, пока он не станет недействительным.