2017-06-29 2 views
0

Nach einigen Recherchen fand ich, dass Android gerne einige Teile einer App während der Installation zwischenspeichern, um die Leistung während der Laufzeit zu verbessern.Wie verhindert man, dass App im Cache zwischengespeichert wird

Gibt es eine Möglichkeit zu verhindern, dass Android Dinge aus meiner App zwischenspeichert?

Ich teile meine App über meine Website und Benutzer installieren und aktualisieren Sie die App manuell. Sobald ich meine App aktualisiere, scheinen einige Aktivitäten und Code-Teile auf ihren Geräten zwischengespeichert zu sein.

+0

Was meinst du mit "einige Aktivitäten und Code-Teile scheint im Cache"? –

+0

Wenn ein Kollege von mir meine App installiert, bekommt er einige Layouts und Aktivitäten, die in der Version ersetzt wurden, die er installiert hat. So scheint die App alte Daten zur Anzeige zu verwenden. – Snickbrack

+0

Sie könnten den Cache jedes Mal löschen, wenn Sie ihn aktualisieren? –

Antwort

2

Sie können Ihren Cache jederzeit vor der Aktualisierung oder vor dem Schließen Ihrer Anwendung löschen. -Code löschen Sie den Cache:

public static void trimCache(Context context) { 
     try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
     } catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 

    public static boolean deleteDir(File dir) { 
     if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
     } 

     // The directory is now empty so delete it 
     return dir.delete(); 
    } 

Anruf Trimcache, wenn Sie den Cache löschen möchten (bevor Sie vielleicht aktualisieren oder zu überschreiben die onStop() Methode, den Cache zu löschen, wenn die Anwendung schließen wird

+0

Ich versuche diesen Ansatz und hoffentlich ist es das, was ich für meine App brauche. Danke – Snickbrack

+0

Lass mich wissen, wie es funktioniert! –

+0

Und hat es funktioniert? –

0
?.

Die Art, wie ich Sie sehe, sollte auch ein Cache-Problem haben, wenn Sie Ihre App NICHT aktualisieren ..

Wenn Sie einen Server-Abruf erzwingen möchten, wenn Sie Ihre App aktualisieren, können Sie einen booleschen Wert unter Gemeinsame Einstellungen mit einem Schlüssel speichern Wenn Sie Version 1 installieren, holen Sie und machen Sie putsBoolean(version, true) wo Version == "1". Wenn Version 2 installiert ist, finden Sie einen false, der einen Abruf auslöst, gefolgt von putsBoolean(version, true) - aber in diesem Fall version == "2".

Wenn Sie bei der Aktualisierung Informationen verwenden, die eine andere Bedeutung haben, speichert die Lösung die Informationen in einem anderen Teil des Caches, sodass sie nicht an eine Aktivität gesendet werden, die nicht zur Anzeige bereit ist.

Ansonsten scheint die Lösung von @ jordy-deltjens eine gute zu sein.

Verwandte Themen