У меня есть данные (например, 200 сообщений) и вы хотите быстро загрузить их, чтобы пользователь не видел прогресс/предварительный загрузчик каждый раз, когда он входит на этот экран. Это то, что я делаю:Загрузка данных быстро
Если пользователь открывает окно в первый раз, получить первые 8 сообщения, хранить их (я хранить JSON в виде строки в SharedPreferences), и когда запускается пользователем прокручивая и добирается до 7-го поста, я использую разбивку на страницы (выбор новых 8 сообщений и их добавление) и так далее. Этот случай работает нормально.
Если пользователь уже был в этом scree, я загружаю первые 8 сообщений из SharedPreferences, чтобы сразу увидеть некоторые результаты без начала получения новых результатов. Когда он достигает дна - снова разбивается на страницы. Проблема заключается в том, что при нажатии между элементами нижней панели вкладок есть 1 с задержка, открывающая вкладку с сохраненными данными. И когда вы делаете это несколько раз, это действительно раздражает. Вот что я делаю:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (isFirstTime) { getFirstEight(); progress.show(); } else { JSONObject data = getStoredJSONFromShared(); if (data != null) { Post[] posts = gson.fromJson(data.getJSONObject("response").get("posts").toString(), Post[].class); } } }
создать это внутри onCreateView, потому что, когда пользователь не видит на экране в первый раз, данные SharedPreferences загружен до того RecycleView инициализации. Возможно, синтаксический анализ медленный, или я не должен создавать это внутри onCreateView.
Задержка перед открытием нового экрана с щелчком. Например, вы находитесь на пункте 2, щелкая элемент 1, задерживаете одну секунду, а затем показываете первый фрагмент. По этой причине я думаю, что, возможно, потребуется слишком много времени для загрузки данных, и поскольку я делаю это в onCreateView, он не отображает экран немедленно. – charbinary
Да, новый экран с щелчком не будет отображаться до тех пор, пока изображение не будет загружено, а этот код находится в onCreateView. Вот почему вы должны держать onCreateView минимальным и загружать контент в метод onResume. – xaxist