2013-05-10 2 views
0

Я столкнулся с одной проблемой - очисткой истории деятельности. У меня есть следующее следствие, где появляется моя проблема:Android: Очистить Деятельность История

A(SplashScreen)->B(GuestScreen)->C(Screen for signed users)->Press Home Button->A->B->Press Back Button->C->Press Back BUtton->B->Press Back Button->exit from the app. 

Я пробовал разные способы ее решения и нашел только одно довольно странное решение, в течение установки практически всех видов деятельности в SingleInstance и setting all intent flags to CLEAR_TOP and NEW_TASK, но все мероприятия представляя какое-то странное (не как обычно я имею в виду, во-первых, появляется пустой черный экран с actionBar и через ~ 1 секунду появляется мой реальный макет) и с небольшой задержкой, как я уже сказал. Мне не понравилось это решение, несмотря на то, что все закрывается правильно и в правильных последствиях. Теперь я пытаюсь заставить его нормально работать без этой задержки и странного черного экрана на мгновение. Я пытался играть с флагами намерений, например, CLEAR_TASK, CLEAR_TOP. Пытался использовать clearTaskOnLaunh for root activity and finishOnLaunch in manifest file для других, где это необходимо, не помогает. Как это исправить?

EDIT:

Стараясь снова установить clearTaskOnLaunch-А. Я вижу следующий журнал при запуске приложения первый раз (А уже под названием B без каких-либо флагов):

Main stack: 
    TaskRecord{42610648 #869 A } 
    Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
     Hist #4: ActivityRecord{413cf8f8 /.activities.GuestActivity} 
     Intent { cmp=/.activities.GuestActivity } 
     ProcessRecord{414fdf60 15651:/10103} 

// активность гостей (B) вызывает UserActivity (C):

Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
    Hist #3: ActivityRecord{415c86f0 /.activities.UserActivity} 
    Intent { cmp=/.activities.UserActivity } 
    ProcessRecord{414fdf60 15651:/10103} 

// Пресс Главная кнопка и приложение для запуска снова (A вызвал B):

TaskRecord{42610648 #869 A cashongo.app.peachy} 
Intent { flg=0x10000000 cmp=c/.activities.SplashActivity } 
    Hist #5: ActivityRecord{42127398/.activities.GuestActivity} 
    Intent { cmp=/.activities.GuestActivity } 
    ProcessRecord{414fdf60 15651:/10103} 
    Hist #4: ActivityRecord{415c86f0 /.activities.UserActivity} 
    Intent { cmp=/.activities.UserActivity } 
    ProcessRecord{414fdf60 15651:/10103} 

Та же проблема снова, последняя активность в истории. Если я нажму кнопку «Назад», я получу UserActivity.

+0

непонятный. когда вы нажимаете главную кнопку, текущая активность приостанавливается и переходит на главный экран. http://developer.android.com/guide/components/tasks-and-back-stack.html – Raghunandan

+0

Мне просто нужно очистить всю историю или задачу при запуске приложения опять же, что в стеке не будет никаких ранее сохраненных действий. – user1376885

+0

Где вы запускаете свое приложение, когда у вас есть clearTaskOnLaunh для корневой активности? Является ли корневая активность? –

ответ

0

я не понял ваш вопрос 100%

Я думаю, что вы столкнулись с проблемой с стеком деятельности и CLEAR_TOP

поэтому используйте startActivityForResult вместо startActivity

0

Пути мы неподвижный он принимает статическую логическую переменную в непосредственной первой активности. Пусть ваша первая активность равна A, In A объявляет переменную ниже

public static boolean closeAllActivities=false; 

Тогда в остальной части всех видов деятельности, разместить код ниже в onResume()

protected void onResume() { 
super.onResume(); 
if(A.closeAllActivities) 
{  
    finish(); 
} 
else 
{ 
    // TODO your requirement inside onResume 
} 
     } 

И везде, где у хотел бы выйти установить приложение, как

A.closeAllActivities=true;//It exits all the activities one after other. 
0

Кажется, мне удалось исправьте это, но это все еще немного странно. Я установил launchMode = singleInstance для A и B. И вызывать любые действия без каких-либо флагов. Нет черного экрана с 1 секундой задержки между вызовом деятельности. Немного странное решение, потому что Google не рекомендует использовать singleInstance или singleTask для общих ситуаций, я думаю, что это общий. Если кто-то найдет лучшее решение, пожалуйста.

ОБНОВЛЕНИЕ: Еще одна очень важная вещь при сборке и запуске apk через IDE. Некоторое приложение для запуска IDE неправильно видит this post. Из-за этого поведение стека может быть изменено.

Смежные вопросы