2010-09-21 10 views
50

Ich schätze, dass Android die Leute nicht dazu bringen wird, weil sie denken, dass sie perfekte Handhabung für die Aufgabe/Anwendungen haben. Allerdings muss ich das in meinem Fall wirklich tun.Wie man Anwendung von der letzten Anwendungsliste entfernt?

Ich habe eine Aktivität A, die als Eingangspunkt meiner Anwendung fungiert. In dieser Aktivität liest es die Präferenz und entscheidet, welche Aktivität zu starten ist, sagen B oder C. Danach beendet es sich selbst. Daher wird Aktivität A den Benutzern nie angezeigt.

Meine Anwendung speichert Dinge auf SD-Karte und liest davon ständig. Also, wenn die SD-Karte ausgehängt wird, muss ich eine Meldung an den Benutzer anzeigen, dass die SD-Karte nicht verfügbar ist, anstatt B oder C zu öffnen. Ich setze ein Häkchen in A, um diese Nachricht anzuzeigen, wenn sdcard nicht verfügbar ist. Wenn diese Nachricht angezeigt wird, versucht A nicht, B oder C zu starten.

Dinge funktioniert perfekt, wenn Benutzer nur meine Anwendung aus dem Anwendungs-Launcher eingeben. Ich habe jedoch festgestellt, dass der Benutzer meine Anwendung auch durch langes Drücken von zu Hause eingeben und aus der Liste der letzten Anwendungen auswählen kann, wenn er sie zuletzt geöffnet hat. Wenn Benutzer das tut, überspringt es A und geht direkt zu B oder C. Ich habe nicht die Prüfung in beiden, so Ausnahme wird geworfen, während ich versuche, auf SD-Karte zuzugreifen, und Erzwingen schließen Dialog erscheint.

Ich kann einfach meinen Scheck auf B und C verschieben, um dieses Problem zu beheben. Aber in Zukunft wird die Anzahl der von A aus begonnenen Aktivitäten zunehmen. Wenn es 6 sind, muss ich diesen Scheck an 6 Stellen kopieren. Unnötig zu sagen, das sieht sehr hässlich aus und ist ein Wartungsalbtraum.

Also, die beste Lösung sollte meine Anwendung aus der jüngsten Liste der Anwendungen entfernen, wenn die SD-Karte unmontiert ist. Ich kann jedoch nicht finden, wie das geht. Wenn Sie den Prozess sogar beenden oder ActivityManager.restartPackage verwenden, wird er weiterhin in der Liste angezeigt. Kann mir jemand sagen, wie man es von der Liste entfernt?

+5

'Ich muss das wirklich in meinem Fall tun 'Dann ist Ihr Entwurf falsch – Falmarri

Antwort

182

versuchen

<activity android:name=".MainActivity" 
     android:excludeFromRecents="true" ... 

in Ihrer AndroidManifest.xml ‚s Aktivität Erklärung.

+1

Danke Mann !! das hat den Trick gemacht! – Jakob

+0

ehrfürchtiger mann !! sehr geholfen :) – nithinreddy

+2

Dies sollte als die richtige Antwort markiert werden. –

4

würde ich nicht so zu tun, empfehlen, aber ich würde die folgenden Optionen versuchen:

Option 1:

auf B und C add:

protected void onPause() { 
    finish(); 
} 

Option 2:

Hinzufügen zu B und C das folgende in AndroidManifest:

android:noHistory= "true" 
4

Das Entfernen Ihrer Anwendung aus der Liste der neuesten Apps ist wahrscheinlich nicht möglich und definitiv nicht die beste Lösung. Das verwirrt den Benutzer, der erwartet, dass sich alle Apps ähnlich verhalten.

Egal, ich denke nicht, dass es Ihr Problem lösen wird. Wenn der Benutzer während Aktivität B nach Hause geht und die App auf der Startseite auswählt, wird Activiy B erneut gestartet.

Es gibt eine Reihe von Möglichkeiten, das eigentliche Problem zu lösen. Eine einfache Möglichkeit könnte darin bestehen, eine Basisaktivität zu erstellen, die die SD-Kartenprüfung durchführt und von der alle Ihre Aktivitäten ausgehen. Auf diese Weise ist der Scheck nur an einem Ort.

2

OK, ich weiß in der Tat, dass es in 2.3.4 getan werden kann. Die App Toddler Lock löscht beim Öffnen die Liste der zuletzt verwendeten Apps. Wenn Sie Ihr Telefon "sperren", wenn Sie die Home-Taste lange drücken, ist die Liste leer. Leider habe ich nicht gefunden wie es geht. Also für jeden, der postf schaut und liest, dass es nicht möglich ist, gib nicht auf. Ich bin sicher nicht.

15

fügen Sie einfach android:excludeFromRecents="true" in Tag Ihrer Aktivität der in den manifesten file..its leicht

16

Andere Attribute können Sie Ihre Aktivitäten aus anderen Aktivitäten im selben Paket isolieren helfen.

<activity 
android:name=".aActivity" 
android:excludeFromRecents="true" 
android:taskAffinity="" 
android:launchMode="singleInstance"> 
11

Sie müssen AndroidManifest.xml einstellen:

<activity> 
    ... 
    android:excludeFromRecents="true" 
    ... 
</activity> 

oder diese Aktivität starten von

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 

und auch in AndroidManifest.xml

<activity> 
    ... 
    android:label="" 
    ... 
</activity> 

Rahmen Label als leer wird dies aktiv machen Die Option wird NICHT in der Liste der zuletzt verwendeten Apps angezeigt.

+1

Vielen Dank. Nachdem ich mir wochenlang den Kopf gekratzt habe, fand ich endlich das Problem aus deiner Antwort. –

0

, wenn Sie Ausgang Anwendung auf Tastenklick verwenden wollen diesen Code:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
startActivity(intent); 

Um die komplette App zu töten und entfernen Sie sie aus Runningapp Liste töten die App durch seine pid (seine böse) ... verwenden diese Zeilen vor dem obigen Code.

int pid = android.os.Process.myPid(); 
android.os.Process.killProcess(pid); 
Verwandte Themen