2013-12-11 6 views
6

Moja aplikacja działająca w tle, w pewnym momencie wyświetla działanie, które celowo przerywa przepływ użytkownika. Moja aktywność rozpoczyna nowe zadanie, które pojawia się na listach "Ostatnie zadania" będąc na pierwszym planie. Czy można temu zapobiec? Ustawienie android:excludeFromRecents nie działa - aktywność nie jest już pokazywana w "Ostatnie zadania" tylko po tym, jak został wstrzymany.Wyklucz bieżącą aktywność z ostatnich zadań

Oczywisty wygląda następująco:

<activity 
    android:name="com.example.recenttasks.MainActivity" 
    android:excludeFromRecents="true"> 
</activity> 

i aktywność rozpoczyna się w ten sposób:

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context, MainActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i); 
} 

Odpowiedz

2

jesteś zdefiniowany go w manifeście, który jest wystarczająco, ale nie przychodzi ..

ok ..tutaj dodaj tę flagę również do swojej Intnet i rozpocznij działanie ..

intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
+0

Niestety, nie pomogło. – lstipakov

2

Kluczową rzeczą, którą wspomina się

pojawia się w „Recent Zadania” list będąc w planie

myślę, że nie można zmienić to zachowanie. Właśnie testowałem na mojej aplikacji i to samo się dzieje. Jeśli naciśniesz przycisk "ostatnich zadań" podczas aktywności na pierwszym planie, pojawi się tam na liście. W momencie, gdy przenoszę się z niego na inną aktywność lub na główny ekran mojego telefonu, aktywność ta nie jest już wymieniona.

Testowałem również to na wbudowanej aplikacji DeskClock, która jest dostarczana wraz z ostatnimi wersjami systemu Android i takie samo zachowanie występuje tam, gdy uruchamiany jest nowy alarm. Zwróć uwagę, że aktywność tej aplikacji w usłudze AlarmAlertFullscreen ma te same parametry, które wymieniono w pytaniu.

Nie jestem pewien, czy można to obejść, lub dlaczego musielibyśmy to zrobić w pierwszej kolejności, ponieważ aktywność nie jest już wyświetlana po utracie koncentracji.

+0

Próbuję emulować zachowanie UsbDebuggingActivity, które pojawia się na urządzeniach 4.x, gdy łączysz go po raz pierwszy za pośrednictwem adb. Wygląda na to, że działanie niszczy się, gdy pojawia się "Ostatnie aplikacje" (mimo że nie widzę go z kodu do tej pory http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android /android/4.2_r1/com/android/systemui/usb/UsbDebuggingActivity.java/#UsbDebuggingActivity) – lstipakov

+1

OK, używa 'finishOnCloseSystemDialogs = true' w manifeście. Prawdopodobnie powinienem zrobić to samo. – lstipakov

+0

@Stipa Wrócić, aby zaktualizować nas. :) –

0

Użyj poniższego kodu, a wtedy Twoja MainActivity nie pojawi się w Recent Tasks.

Intent i = new Intent(context, MainActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
context.startActivity(i);