Принудительный вызов ViewPager instantiateItem

У меня есть представление, которое содержит ViewPager, видимость которого установлена в GONEзначение при запуске. Вводя печать на instantiateItemметоде пейджера, я заметил, что этот метод вызывается только тогда, когда для пейджера установлено значение VISIBLE.

Поскольку экземпляр кажется немного тяжелым, пользователь может заметить небольшой «удар», когда пейджер должен быть показан в первый раз (когда вызывается метод экземпляра).

Тем не менее, при запуске приложения, есть экран загрузки (установление соединений и т.д.), и я хотел бы иметь возможность сделать вызов пейджераinstantiateItem, пока этот экран загрузки работает (но не показывая вид пользователю).

Как этого достичь?

Спасибо!

1 ответ

  1. Это имеет место в качестве оптимизации, потому что не было бы никакой причины создавать экземпляры элементов, если пользователь может никогда не видеть их.

    Если instantiateItemэто такой длительный процесс, то вы можете вызвать его на свой адаптер самостоятельно и кэшировать экземпляры элементов. Это нормально, если у вас не так много элементов.

    В противном случае, вы должны заставить ViewPager думать, что он виден. Вместо того, чтобы установить его видимость, вы можете просто скрыть его за видом, а затем сделать вид уйти, когда все готово. Просто убедитесь, что вы записываете сенсорные события в представлении, чтобы они не передавались на ViewPager.