Я пытался заменить тяжелый XML файл каким-то кодом, используя ArrayAdapter
, который я сделал. Макет такой, как я ожидал. Однако время загрузки Fragment
слишком велико (не менее 10 секунд). Я продолжаю получать сообщения типа I/Choreographer: Skipped 779 frames! The application may be doing too much work on its main thread.
Перед использованием Adapter
я пытался использовать AsyncTask
или Thread
, но сделал его менее медленным.
Согласно профилировщику, 10-секундный интервал находится между первым Fragment
паузой и вторым Fragment
возобновлением.
Второй фрагмент onViewCreated
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
final Hashtable<Integer, Integer> dico = new Hashtable<>();
//region filling Dico
dico.put(2002, R.array.anMD2002);
dico.put(2003, R.array.anMD2003);
dico.put(2004, R.array.anMD2004);
dico.put(2005, R.array.anMD2005);
dico.put(2006, R.array.anMD2006);
dico.put(2007, R.array.anMD2007);
dico.put(2008, R.array.anMD2008);
dico.put(2009, R.array.anMD2009);
dico.put(2010, R.array.anMD2010);
dico.put(2011, R.array.anMD2011);
dico.put(2012, R.array.anMD2012);
dico.put(2013, R.array.anMD2013);
dico.put(2014, R.array.anMD2014);
dico.put(2015, R.array.anMD2015);
dico.put(2016, R.array.anMD2016);
dico.put(2017, R.array.anMD2017);
dico.put(2018, R.array.anMD2018);
dico.put(2019, R.array.anMD2019);
dico.put(2020, R.array.anMD2020);
//endregion
final MySQLiteHelper help = new MySQLiteHelper(getActivity());
Resources res = getResources();
final List<String> allExtensionsName = new ArrayList<>();
//region filling allExtName
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2020)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2019)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2018)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2017)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2016)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2015)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2014)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2013)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2012)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2011)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2010)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2009)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2008)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2007)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2006)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2005)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2004)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2003)));
allExtensionsName.addAll(Arrays.asList(res.getStringArray(R.array.anMD2002)));
//endregion
int[] maxs = getMaxs(allExtensions, help);
int[] progress = getProgresses(allExtensions, help);
ListView listView = mView.findViewById(R.id.listView);
final StatAdapter statAdapter = new StatAdapter((Accueil) getActivity(),prepareAdapter(maxs, progress,
allExtensionsName, dico), allExtensionsName);
listView.setAdapter(statAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String[] s = statAdapter.getItem(position);
if (s==null) return;
if (!s[2].equals(""))
launchParticularStat(s[1],(ProgressBar) view.findViewById(R.id.progress_bar),
allExtensions[allExtensionsName.indexOf(s[1])]);
}
});
}
Вот звонок из первого фрагмента:
m.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StatFrag stats = new StatFrag();
accueil.getSupportFragmentManager().beginTransaction().replace(
R.id.fragment_container, stats).addToBackStack(null).commit();
}
});
Есть ли причина для этого отставать? Спасибо.