Я хочу получить некоторые данные из сервиса по запросу и в будущем.Это один из моих кодов:
@Override
public void getCIFilesType(Consumer<String> consumer) {
try {
consumer.accept(serviceExecutor.submit(() ->
service.getCi(EsupFactory.getConfigString(SETTING_ROOT_CI) + "GetCI",
translator.makeCiJsonObject("PCiName", "CI_FilesType")).execute())
.get().body().string());
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
У меня есть 10 таких методов, которые выполняются, как описано выше. Я использовал службу Executor для запуска callable
:
ExecutorService serviceExecutor = Executors.newSingleThreadExecutor();
Я - мойактивность У меня есть меню, а затем нажмите на один пункт в меню, фрагмент является транзакцией в деятельности.Все задачи потока сразу начались в onViewCreated
во фрагменте:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
presenter.getCis();
}
Но когда я щелкнул по пункту меню, UI
свалился, пока все задачи не были закрыты, тогда транзакция была закрыта.Это не первый раз, когда у меня есть эта проблема.Каждый раз, когда я пользуюсь сервисом callable и executor, я не знаю, почему пользовательский интерфейс завален !!!!
Это профилировщик:
У кого-то есть рекомендации для меня !!?Пожалуйста, не говорите мне использовать asyncTask: -)
Что такое строка чтения ??В пользовательском потоке я просто делаю транзакцию, а не выполняю долго выполняющуюся задачу !!!