В настоящее время я разрабатываю приложение (возможно, вы ответили или видели некоторые другие вопросы) и у меня проблема с удобством использования. У меня есть ящик для навигации, и когда пользователь нажимает на один из элементов, другой фрагмент заменяет основной frame_content. Проблема, с которой я сталкиваюсь, заключается в том, что транзакция занимает некоторое время на моем devie.Увеличьте время загрузки фрагмента транзакций для приложений Android
Я нажимаю на один элемент в навигационном ящике, а затем приложение «stucks» в течение нескольких секунд и будет продолжать работать нормально.
Я также знаю, где проблема, потому что, когда я заменяю фрагмент, в котором нет данных, он работает мгновенно. Просто приложение должно отображать очень много данных. Я передаю HashMap<String, Collection<String>>
фрагменту и читаю его там. Я сохраняю его в массиве, а затем я снова читаю этот массив в цикле for и показывая данные.
Я думал о различных других способах: чтение всех данных в основной деятельности, а затем передача нескольких массивов в фрагмент. но проблема в том, что мне нужно 13 массивов для каждого фрагмента, потому что хэш-карта содержит данные из 13 разных ключей. каждая клавиша имеет 1 значение. и всего 50 записей. Таким образом,
50 Записи содержат 13 ключей, содержащих 1 значение.
Это очень много данных для загрузки устройства. Поэтому я подумал о том, как я мог бы, вероятно, увеличить скорость фрагмента загрузки.
Я загружаю данные из XML с помощью AsyncTask во время загрузки заставки, а затем я сохраняю его в другой хэш (в зависимости от того, какой xml я загрузил). Затем я начинаю новое намерение по основной деятельности и передаю все хэш-карты. то в зависимости от списка ящиков навигации открывается новый фрагмент и хэш-карта передается в функцию в фрагменте. то данные считываются в массивы, и массив снова считывается в методе OnCreateView для добавления данных в макет.
Любые идеи по улучшению скорости? это то, как я в настоящее время изменить свои фрагменты
protected void onNavItemSelected(int id) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
switch ((int) id) {
case 101:
MainFragment.passList(hashMap);
ft.replace(R.id.content_frame, new MainFragment());
ft.commit();
break;
//further cases....
Я думаю, это моя петля. Поскольку, когда у меня есть только один элемент в цикле for, он загружается почти мгновенно. когда у меня всего 5, он быстро загружается, но когда у меня есть 50 (что мне нужно), это занимает слишком много времени. или я должен просто добавить 3, и когда пользователь прокручивает автозагрузку следующих данных? – Musterknabe
Вы работаете со списком для своих товаров? – guikk
У меня есть LinearLayout в ScrollView в RelativeLayout. Имейте LinearLayout в ScrollView, потому что у него может быть только один ребенок. Вы предложили бы использовать представление списка вместо линейного макета? – Musterknabe