Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
slavak7878
-15 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 20
1

AsyncTask и Activity

25.07.2017, 09:27. Просмотров 906. Ответов 10
Метки нет (Все метки)

Здравствуйте! Назрел новый вопрос.
Когда запускаешь асинхронную задачу в методе onCreate(), активити появляется только после того, как эта асинхронная задача будет выполнена.
Все таки хотелось бы, чтобы активити появилось, а уж потом сработала асинхронная задача.
Спасибо заранее за ответы.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2017, 09:27
Ответы с готовыми решениями:

Узнать завершил ли работу Activity (не AsyncTask)
Добрый день ув. Программисты. - Имеется ImageLoader.java работает без AsyncTask. - И Имеется...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было...

Android - Передача данных с одного Activity на другое Activity
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном...

Как из одного Activity перенести фотку в другое Activity?
Собственно необходимо отобразить фотографию в activity2, которую загрузили в activity1 из галереи ...

Изменение layout-элементов одного activity из другого activity
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго...

10
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 318
25.07.2017, 09:54 2
Цитата Сообщение от slavak7878 Посмотреть сообщение
активити появляется только после того, как эта асинхронная задача будет выполнена.
Ну видимо ваша асинхронная задача настолько короткая, что завершается до того как создается активити. Если в onCreate кроме инициализации view ничего больше нет, то поставьте задержку в начале выполнения вашей асинхронной задачи. Либо смотрите какой метод выполняется после onCreate, например, onStart или onResume, и переносите асинхронную задачу в него. Только учтите, что эти метода будут срабатывать всегда при появлении вашей активити, а не только при ее создании.
0
slavak7878
-15 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 20
25.07.2017, 10:07  [ТС] 3
Дело то как раз в том, что асинхронная задача как раз-то и не короткая. Пользователь выбрал из меню, чтобы эта активити появилась, а задача длинная, и думает, то ли нажал, то ли не нажал. Вот и хотелось, чтобы вначале активити появилась, а потом задача выполнилась.
0
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,919
Завершенные тесты: 1
25.07.2017, 10:13 4
код где?
0
25.07.2017, 10:13
slavak7878
-15 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 20
25.07.2017, 10:19  [ТС] 5
Цитата Сообщение от Pablito Посмотреть сообщение
код где?
Зачем?
Java
1
2
3
4
5
6
7
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clients);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
new NewThread().execute();
}
и далее забираем клиентов с сервера...

Java
1
2
public class NewThread extends AsyncTask<Integer, Integer, String> {
}
0
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,919
Завершенные тесты: 1
25.07.2017, 10:20 6
Цитата Сообщение от slavak7878 Посмотреть сообщение
Зачем?
если ты такой умный, что ты тут делаешь с такими вопросами?
0
slavak7878
-15 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 20
25.07.2017, 10:23  [ТС] 7
Цитата Сообщение от Pablito Посмотреть сообщение
если ты такой умный, что ты тут делаешь с такими вопросами?
Здесь две строчки кода, зачем расписывать всю асинхронную задачу, мне просто нужно, чтобы она выполнилась после открытия окна, и все.
0
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,919
Завершенные тесты: 1
25.07.2017, 10:26 8
тебе выше отписал человек - есть onResume, а ты начал писать какой-то набор слов в ответ

проблема всех умников одна - они думают, что объясняются очень понятно и прозрачно
на самом деле это не так
0
dedlovscky
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 149
Завершенные тесты: 2
25.07.2017, 10:32 9
Вам же все правильно написали выше
Цитата Сообщение от Hank Посмотреть сообщение
Ну видимо ваша асинхронная задача настолько короткая, что завершается до того как создается активити. Если в onCreate кроме инициализации view ничего больше нет, то поставьте задержку в начале выполнения вашей асинхронной задачи. Либо смотрите какой метод выполняется после onCreate, например, onStart или onResume, и переносите асинхронную задачу в него. Только учтите, что эти метода будут срабатывать всегда при появлении вашей активити, а не только при ее создании.
Свою асинхронную задачу положите в метод onResume() и не важно какая она по величине.
0
ILNAR_93
Android
243 / 240 / 52
Регистрация: 19.01.2013
Сообщений: 1,895
Записей в блоге: 3
25.07.2017, 10:51 10
Лучший ответ Сообщение было отмечено slavak7878 как решение

Решение

Как вариант в активити можно в самом верху объявить переменную bool для того чтобы при каждом onResume не запускалась задача в бэграунде
Java
1
boolean isStartAsync = false;
в onResume() проверять его
Java
1
2
3
4
if (!isStartAsync){
new NewThread().execute();
isStartAsync = true;
}
1
dedlovscky
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 149
Завершенные тесты: 2
25.07.2017, 12:15 11
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
Как вариант в активити можно в самом верху объявить переменную bool для того чтобы при каждом onResume не запускалась задача в бэграунде
Тогда уж проще и практичнее так
Java
1
2
3
4
5
6
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
 
        //savedInstanceState == null ? todo : todo;
    }
0
25.07.2017, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2017, 12:15

Вызвать из одной activity функцию другой activity
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать?...

Как в Navigation Drawer Activity засунуть Activity?
Здравствуйте! у меня такая проблема navigation drawer activity работает только с фрагментами как...

Как добавить cardview в activity с другой activity?
У меня есть активность(1), куда нужно добавить cardview. в этой же активности есть кнопка(1), при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru