Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Завершения потока - Программирование Android

26.05.2013, 23:20. Просмотров 904. Ответов 14
Метки нет (Все метки)

Можно как-нить запустить новый поток, только после того как завершится первый???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 23:20     Завершения потока
Посмотрите здесь:

Ожидание завершения AsyncTask - Программирование Android
Имеется класс "расширяющий" AsyncTask. Как я понимаю при создании объекта этого класса создается новый поток который выполняется...

Как дождаться завершения RequestTask? - Программирование Android
при создании активити в new RequestTask().execute делаю веб запрос, по результатам которого достраивается интерфейс... т.к. в потоке его...

Круг для завершения активности - Программирование Android
Здравствуйте! Хочу спросить как можно добиться вот такого результата: Имеется Окружность, а внутри окружности имеется маленькая...

Ожидание завершения пула потоков - Программирование Android
Нужно чтоб результат этого кода возвращался по завершению выполнения всех потоков в пуле ExecutorService exService =...

AsyncTask не выполняет код после завершения - Программирование Android
При окончании работы doInBackground не вызывается onPostExecute класс ParseTask: public class ParseTask extends AsyncTask<String,...

Почему после завершения работы приложение активно? - Программирование Android
Установил программу на телефон. Протестил, делаю выход:finish(); System.exit(0); Открываю настройки->приложения->(моя программа) ...

Дождаться завершения работы AsyncTask и выполнять код дальше - Программирование Android
Помогите, пожалуйста. Мне нужно дождаться завершения работы AsyncTask и только потом выполнять код дальше. Я уже понял, что для этого нужно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.05.2013, 23:25     Завершения потока #2
просто в конце кода потока и запускать...
или опишите проблему подробнее.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
26.05.2013, 23:34  [ТС]     Завершения потока #3
У меня в одном класс запускается поток, а в другом классе к нему подключается другой, но мне нужно чтобы второй поток запустился только после того как первый поток получит нужные данные. Иначе второму потоку не с чем работать.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.05.2013, 23:53     Завершения потока #4
Цитата Сообщение от Stylish2013 Посмотреть сообщение
У меня в одном класс запускается поток, а в другом классе к нему подключается другой
поподробнее...

Добавлено через 1 минуту
если нужна синхронизация между двумя потоками используйте join()/wait().
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:08  [ТС]     Завершения потока #5
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    public void login() {
 
            // Общение с сервером в отдельном потоке чтобы не блокировать UI поток
            new Thread() {
                @Override
                public void run() {
 
       //здесь важный код который получает от сервера данные
 
                          JSONObject jsoDB = jParserAUMeVolution
                    .getJSONFromUrl(urlMe);
                            
                String api_token = jsoDB .getString("api_token");
                    
                accountMePreferences.api_token = api_token;
 
                accountMePreferences.save(MainActivity.this);
 
    }
    }.start();
и пока вот эти строчки кода не выполняться другому потоку нельзя работать.
Java
1
2
3
4
5
                                String api_token = jsoDB .getString("api_token");
                    
                accountMePreferences.api_token = api_token;
 
                accountMePreferences.save(MainActivity.this);

но другой поток сам запускается в другом классе (фрагменте). Но ему нет смысла работать пока не будут выполнены строчки выше, так как он использует эти данные.

В другом классе поток запускается по аналогии. Но мне нужно его не запускать пока данные не будут получены первым потоком.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.05.2013, 00:11     Завершения потока #6
а в чем проблема запускать его после этих строчек?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:13  [ТС]     Завершения потока #7
Цитата Сообщение от V0v1k Посмотреть сообщение
а в чем проблема запускать его после этих строчек?
проблема в том что первый поток запуститься только при первом запуске приложения, а последующие запуски он не выполнится, а второй поток будет работать всегда.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.05.2013, 00:19     Завершения потока #8
что-то вы с архитектурой намудрили, обычно используется код наподобие этого
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
login(new LoginCallback(){
           onLogin(){
                  //залогинились
           }
});
......
 public void login(LoginCallback callback) {
 
            // Общение с сервером в отдельном потоке чтобы не блокировать UI поток
            new Thread() {
                @Override
                public void run() {
 
       //здесь важный код который получает от сервера данные
 
                          JSONObject jsoDB = jParserAUMeVolution
                    .getJSONFromUrl(urlMe);
                            
                String api_token = jsoDB .getString("api_token");
                    
                accountMePreferences.api_token = api_token;
 
                accountMePreferences.save(MainActivity.this);
                 callback.onLogin();
    }
    }.start();
Добавлено через 1 минуту
Цитата Сообщение от Stylish2013 Посмотреть сообщение
проблема в том что первый поток запуститься только при первом запуске приложения, а последующие запуски он не выполнится, а второй поток будет работать всегда.
при чем здесь это? записывайте в преференсы что уже залогинились и все. что-то вы намудрили с потоками.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:24  [ТС]     Завершения потока #9
так в том то и дело, пока в преференсы данные не будут записаны я не смогу залогиниться. Как только данные там окажутся, всё я залогинился могу работать. Как поступить в моей ситуации?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.05.2013, 00:32     Завершения потока #10
Java
1
2
3
4
5
6
login(new LoginCallback(){
           onLogin(){
               //залогинились, говорим другому фрагменту загружать данные
                  secondFragment.loadData();
           }
});
Добавлено через 34 секунды
я не понимаю проблемы.

Добавлено через 3 минуты
сначала говорите что нужно что-то выполнить после логина, теперь наоборот, я окончательно запутался в вашей каше...

Добавлено через 2 минуты
а чтобы отловить изменение преференсов есть метод registerOnSharedPreferenceChangeListener
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:37  [ТС]     Завершения потока #11
а можете мне подсказать, как просто во втором потоке сказать: Start только тогда когда

Java
1
2
String api_token = preferens.api_token;
api_token != null
а так ждём до победного конца
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.05.2013, 00:39     Завершения потока #12
Java
1
2
3
4
5
login(new LoginCallback(){
           onLogin(){
               startSecondThread();
           }
});
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:41  [ТС]     Завершения потока #13
Я не понимаю, что такое login и остальное, можно на моем примере?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.05.2013, 00:46     Завершения потока #14
смотрите первую страницу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 00:48     Завершения потока
Еще ссылки по теме:

Завершение потока - Программирование Android
Необходимо корректно завершить поток. Сейчас код такой class MyThread extends Thread { private void method() throws...

Оповещение в UI из потока - Программирование Android
Доброго времени. суть проблеммы в сл. не работает повторное оповещение UI из потока. в приложении создаеЦа новый поток для выполнения некой...

Остановка потока - Программирование Android
Доброго времени суток. Пишу первое приложение под андроид, поэтому прошу сильно не пинать. Вопрос в следующем: на данный момент при...

Не работает остановка потока! - Программирование Android
Помогите пожалуйста! Укажите на ошибку! Почему не останавливается поток???? public class FoneService extends Service { // ИМЯ...

Возврат данных из потока - Программирование Android
День добрый. Скажите пожалуйста: имеется функция которая возвращает Vector<String>. Ее нужно выполнить в отдельном потоке, но так чтобы...


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

Или воспользуйтесь поиском по форуму:
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
27.05.2013, 00:48  [ТС]     Завершения потока #15
Проблему, решил другими способами, изменив ход последовательности выполнения программы.
Yandex
Объявления
27.05.2013, 00:48     Завершения потока
Ответ Создать тему
Опции темы

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