Я хочу получить некоторые данные из службы по вызываемому и будущему. Это один из моих кодов:
@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
, он затухает до тех пор, пока вся задача не будет завершена, а затем транзакция не будет завершена. У меня не первый раз такая проблема. Каждый раз, когда я использую вызываемый и исполнительный сервис, я не знаю, почему пользовательский интерфейс завивается!!!!
Это профайлер:
У кого-то есть руководство для меня!!? Пожалуйста, не говорите мне использовать asyncTask :-)
Что такое строка чтения?? В потоке пользовательского интерфейса я просто выполняю транзакцию, а не выполняю длительную задачу !!!