Wie lösche ich alle temporären Dateien, die von createTempFile beim Beenden einer App in Android erstellt wurden?

8

Ich verwende den folgenden Code, um einige temporäre Dateien zu erstellen, und wrapped als Eingangsteam, das an die Client-Seite gesendet werden soll.

Ich verstehe, dass die temporären Dateien automatisch von Android-System gelöscht werden können, wenn der Speicherplatz knapp ist.

Aber ich hoffe, ich kann die temporären Dateien selbst löschen, wenn ich die App verlasse, wie kann ich das tun? Vielen Dank!

Code

%Vor%     
HelloCW 26.02.2017, 03:02
quelle

5 Antworten

3

Löschen Sie die Dateien in onDestroy , wenn isChangingConfigurations() ist false oder isFinishing ist true . Beispiel:

%Vor%     
Jared Rummler 01.03.2017, 03:33
quelle
5

Rufen Sie die Methode deleteOnExit() auf!

Oder

Rufen Sie die Methode delete() in Ihrer onStop() auf Aktivität.

Bearbeiten:

Es könnte besser sein, wenn Sie delete() in% co_de aufgerufen haben %, um sicherzustellen, dass Ihr Code funktioniert, selbst wenn die App vom System zerstört wird.

    
Atef Hares 26.02.2017 03:28
quelle
0

Denken Sie daran, dass "Beenden" für eine Android-App etwas ganz anderes bedeutet als für eine Desktop-Anwendung. Weitere Informationen finden Sie in diesem Artikel . Die kurze Antwort lautet jedoch, dass Sie im Allgemeinen no haben Idee , wenn das Betriebssystem Ihre App schließen soll (auch wenn sie nicht sichtbar ist). Tatsächlich gibt es keine explizite Garantie, dass das Betriebssystem es überhaupt schließt.

Ein paar Ideen können hier gefunden werden (es ist C # / Xamarin.Android, aber genau die gleiche Idee für Java): Wie erkennen Anwendung beenden auf Android?

Zusätzlich zu den dort aufgeführten Dingen könnten Sie auch versuchen, Broadcast-Empfänger für das Herunterfahren des Telefons zu registrieren.

Ein anderer (schlimmer, meiner Meinung nach) Weg ist einfach, wenn die App nicht mehr sichtbar ist (in onStop ). Wie oben erwähnt, ist dies jedoch nicht dasselbe wie das Programm, das tatsächlich schließt (weil Sie nicht wissen, wann - oder sogar wenn - das Betriebssystem die App tatsächlich schließt).

    
EJoshuaS 28.02.2017 06:53
quelle
0

Es wäre besser, wenn Sie ein Set (Duplikate vermeiden) für alle von Ihnen erstellten Dateien beibehalten könnten.

Und iterieren Sie die Dateiliste und löschen Sie jede Datei einzeln.

%Vor%

Und lösche alles durch Iteration.

%Vor%     
Sridhar 01.03.2017 14:56
quelle
0

Leider müssen Sie diese Dateien einzeln löschen, indem Sie sie zuvor in einem Array speichern.

Wenn Sie die Android-Entwickler Seite zu diesem Problem überprüfen es macht es so, als ob Sie die zwischengespeicherten Dateien "regelmäßig löschen könnten und auch regelmäßig andere Dateien löschen könnten, die Sie nicht mehr benötigen". Ich glaube jedoch nicht, dass es eine Erklärung dafür gibt.

    
Luís Gonçalves 06.03.2017 10:54
quelle

Tags und Links