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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 5.00
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
#1

Завершение предыдущего активити (удаление из стека) - Android

27.11.2011, 01:06. Просмотров 5472. Ответов 11
Метки нет (Все метки)

товарищи, подскажите способы завершения предыдущего активити в стеке, чтобы по нажатию клавиши "назад" из последующего я уже не возобновлял предыдущее??

вроде раньше использовал простой finish() перед startActivity(), теперь почему-то после перехода на новое предыдущее из стека не удаляется. возможно ли, что проблема кроется в том, что нужный код выполняется внутри метода onPostExecute класса AsyncTask?

код выглядит где-то так:

Java
1
2
3
4
5
6
7
8
9
10
11
doInBackground(...) {
if (...) {
// finish current activity
finish();
                    
// ... and go to the new activity
Intent intent = new Intent();
intent.setClass(getApplicationContext(), PackagesList.class);
startActivity(intent);  
}
}
ожидаю, что после выполнения проверки if() выполняется и финиш, запускаем новое активити, а в предыдущее по нажатию "назад" уже не возвращаемся. но не тут-то было!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lolopolosko
1353 / 311 / 5
Регистрация: 21.11.2009
Сообщений: 992
27.11.2011, 13:32     Завершение предыдущего активити (удаление из стека) #2
в OnPause() пропишите finish() а не в где нибудь... хотя не знаю точно.
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
27.11.2011, 13:43  [ТС]     Завершение предыдущего активити (удаление из стека) #3
наверное, в onPause вызывать - это не лучшая идея, т.к. к нему идет обращение не только в случае успешного перехода к следующему активити, а и при сворачивании приложения, например. я всё верно понимаю?
lolopolosko
1353 / 311 / 5
Регистрация: 21.11.2009
Сообщений: 992
27.11.2011, 13:52     Завершение предыдущего активити (удаление из стека) #4
Опа!!, да
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
27.11.2011, 13:53  [ТС]     Завершение предыдущего активити (удаление из стека) #5
ну тогда Ваш вариант не подходит
kimp
Сообщений: n/a
12.06.2012, 09:23     Завершение предыдущего активити (удаление из стека) #6
Java
1
2
3
        moveTaskToBack(true);
        finish();
        System.exit(0);
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
12.06.2012, 14:13     Завершение предыдущего активити (удаление из стека) #7
во-первых я бы не рекомендовал пользоваться AsyncTask
во-вторых почитайте про Loader
в третьих асинк таск не отваливаеться когда астивити уничтожаеться
в четвертых ваша проверка - это треш какой то
в пятых асин таск не мешает завершению активити, проверте ваш манифест на наличие доп свойст у активити, типа такого android:alwaysRetainTaskState="true"
silentnuke
Android Programmer
138 / 139 / 5
Регистрация: 08.12.2010
Сообщений: 421
12.06.2012, 14:32     Завершение предыдущего активити (удаление из стека) #8
Цитата Сообщение от flashok Посмотреть сообщение
во-первых я бы не рекомендовал пользоваться AsyncTask
обоснуйте
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
12.06.2012, 14:43     Завершение предыдущего активити (удаление из стека) #9
Не рекомендовал так как async task при перевороте девайса перезапускаеться (да можно написать костыль). В loader уже все обработана данная ситуация. Также существую проблемы с остановкой async task например когда в асин таске выполняеться посылка запроса на сервер. В Loader сам следит за активити и если нет активити не возращает результат. Про третье проверял на опыте все отрабатывает даже после закрытия активити (например тот же запрос), более того после закрытия главного активи (вызывался дестрой) по логики у меня вываливалося диалог. Как то так.
Если в чем то не прав, послушаю умные мысли
silentnuke
Android Programmer
138 / 139 / 5
Регистрация: 08.12.2010
Сообщений: 421
12.06.2012, 14:59     Завершение предыдущего активити (удаление из стека) #10
Цитата Сообщение от flashok Посмотреть сообщение
Не рекомендовал так как async task при перевороте девайса перезапускаеться (да можно написать костыль). В loader уже все обработана данная ситуация. Также существую проблемы с остановкой async task например когда в асин таске выполняеться посылка запроса на сервер. В Loader сам следит за активити и если нет активити не возращает результат. Про третье проверял на опыте все отрабатывает даже после закрытия активити (например тот же запрос), более того после закрытия главного активи (вызывался дестрой) по логики у меня вываливалося диалог. Как то так.
Если в чем то не прав, послушаю умные мысли
за 10 минут пишется asynctask manager, который решает указаные проблемы и дальше используется в других проектах.
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,218
29.04.2014, 20:19     Завершение предыдущего активити (удаление из стека) #11
moveTaskToBack(true); как работает эта функция?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 10:47     Завершение предыдущего активити (удаление из стека)
Еще ссылки по теме:

Android Абстрактная активити
Адаптивность Активити Android
На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити Android
Android Вызов активити
Android Возврат к активити

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

Или воспользуйтесь поиском по форуму:
kalaganoff
Заблокирован
30.04.2014, 10:47     Завершение предыдущего активити (удаление из стека) #12
я извиняюсь, может быть я не правильно понял задачу, но что мешает при запуске активити использовать флаг FLAG_ACTIVITY_CLEAR_TOP ?
как-то так:
Java
1
2
3
Intent a = new Intent(this,A.class);
        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(a);
подробнее о флагах и стеке activity можно почитать тут
Yandex
Объявления
30.04.2014, 10:47     Завершение предыдущего активити (удаление из стека)
Ответ Создать тему
Опции темы

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