Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

27.11.2011, 01:06. Просмотров 6018. Ответов 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() выполняется и финиш, запускаем новое активити, а в предыдущее по нажатию "назад" уже не возвращаемся. но не тут-то было!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 01:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Завершение предыдущего активити (удаление из стека) (Программирование Android):

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити - Программирование Android
Сделал меню в виде ListView. При клике на меню запускаются активити. На эмуляторе работает, на телефоне моем LG все работает. На телефоне...

Как вызвать метод в активити классе из обычного не активити класса? - Программирование Android
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в отдельном классе "сокетсервер"(+в отдельном потоке)...

Отображение активити поверх другого активити - Программирование Android
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по нажатию кнопки настройки, нужно открыть активити с настройками,...

Вызов новой активити не из класса активити - Программирование Android
Есть 4 класса: 1) WelcomeActivity; 2) MainActivity; 3) PopUpActivity; 4) Client. Программа работает с сервером и получает...

Изменение параметров активити из другого активити - Программирование Android
Как сделать так чтобы из первого активити поменять final ImageView img=(ImageView)findViewById(R.id.image1); ...

Реализация стека целых чисел. Процедура добавления нового элемента, удаление, вывод стека - Pascal
Попросили написать программку, но, паскаль очень давно не практикую, поэтому прошу тут: Надо написать программу реализации стека целых...

11
lolopolosko
1354 / 312 / 5
Регистрация: 21.11.2009
Сообщений: 992
27.11.2011, 13:32 #2
в OnPause() пропишите finish() а не в где нибудь... хотя не знаю точно.
0
Опа!!
15 / 15 / 0
Регистрация: 30.09.2009
Сообщений: 89
27.11.2011, 13:43  [ТС] #3
наверное, в onPause вызывать - это не лучшая идея, т.к. к нему идет обращение не только в случае успешного перехода к следующему активити, а и при сворачивании приложения, например. я всё верно понимаю?
0
lolopolosko
1354 / 312 / 5
Регистрация: 21.11.2009
Сообщений: 992
27.11.2011, 13:52 #4
Опа!!, да
1
Опа!!
15 / 15 / 0
Регистрация: 30.09.2009
Сообщений: 89
27.11.2011, 13:53  [ТС] #5
ну тогда Ваш вариант не подходит
0
kimp
0 / 0 / 0
Регистрация: 05.04.2015
12.06.2012, 09:23 #6
Java
1
2
3
        moveTaskToBack(true);
        finish();
        System.exit(0);
0
flashok
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
12.06.2012, 14:13 #7
во-первых я бы не рекомендовал пользоваться AsyncTask
во-вторых почитайте про Loader
в третьих асинк таск не отваливаеться когда астивити уничтожаеться
в четвертых ваша проверка - это треш какой то
в пятых асин таск не мешает завершению активити, проверте ваш манифест на наличие доп свойст у активити, типа такого android:alwaysRetainTaskState="true"
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
12.06.2012, 14:32 #8
Цитата Сообщение от flashok Посмотреть сообщение
во-первых я бы не рекомендовал пользоваться AsyncTask
обоснуйте
0
flashok
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
12.06.2012, 14:43 #9
Не рекомендовал так как async task при перевороте девайса перезапускаеться (да можно написать костыль). В loader уже все обработана данная ситуация. Также существую проблемы с остановкой async task например когда в асин таске выполняеться посылка запроса на сервер. В Loader сам следит за активити и если нет активити не возращает результат. Про третье проверял на опыте все отрабатывает даже после закрытия активити (например тот же запрос), более того после закрытия главного активи (вызывался дестрой) по логики у меня вываливалося диалог. Как то так.
Если в чем то не прав, послушаю умные мысли
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
12.06.2012, 14:59 #10
Цитата Сообщение от flashok Посмотреть сообщение
Не рекомендовал так как async task при перевороте девайса перезапускаеться (да можно написать костыль). В loader уже все обработана данная ситуация. Также существую проблемы с остановкой async task например когда в асин таске выполняеться посылка запроса на сервер. В Loader сам следит за активити и если нет активити не возращает результат. Про третье проверял на опыте все отрабатывает даже после закрытия активити (например тот же запрос), более того после закрытия главного активи (вызывался дестрой) по логики у меня вываливалося диалог. Как то так.
Если в чем то не прав, послушаю умные мысли
за 10 минут пишется asynctask manager, который решает указаные проблемы и дальше используется в других проектах.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
29.04.2014, 20:19 #11
moveTaskToBack(true); как работает эта функция?
0
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 можно почитать тут
0
30.04.2014, 10:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 10:47
Привет! Вот еще темы с ответами:

Работа со стеком. Программа, которая к вершине стека добавляет некоторое число, а следующему элементу присваивает значение предыдущего - C++
Есть некоторый стек, в каждом элементе которого записаны по два целых числа. Нужно сделать программу которая к вершине стека добавляет...

Удаление предыдущего текста при выполнении программы в cmd - C (СИ)
Хотелось бы сделать так: printf ("Введите..."); scanf(); После выполнения этих операций текст стирается, выполняются следующие...

Калькулятор: Сделать автоматическое удаление предыдущего решения при вводе новых значений - C#
имеем дело с калькулятором. после вычисления приходится вручную очищать textbox. подскажите, как сделать автоматическое удаление...

Удаление из стека - C#
Доброго, я не понимаю, почему в методе Pop() происходит удаление значение из массива(стека) ведь return только возвращает данные, т.е...


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

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

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