Ich habe eine einfache Frage: Wenn ich URLConnection.setUseCaches (true) beim Laden von etwas aus dem Web verwenden, wann werden diese zwischengespeicherten Dateien ablaufen? Ich entwickle für Android, aber es macht kaum einen Unterschied ... Also wann werden Cache-Dateien von der SD-Karte entfernt?URLConnection.setUseCaches (true) - Wann läuft der Cache ab?
Antwort
This Frage Antwort schlägt vor, dass URLConnection.setUseCaches(true)
hat keine Wirkung.
Was Neil dann beschreibt, ist, wie intern gespeicherte Android-Apps (Telefonspeicher) auch zwischengespeicherten Inhalt haben können, gehalten in/data/data/packagename/cache. Um Ihre ursprüngliche Frage zu beantworten, aber auf diese Funktion angewendet, hat das System letztendlich die Kontrolle über diese Bereiche, obwohl Sie sich um Ihren eigenen Inhalt kümmern sollten, wie in der API beschrieben.
Wenn das UseCaches-Flag für eine Verbindung true ist, darf die Verbindung alle Caches verwenden, die haben. Wenn falsch ist, sind Caches zu ignorieren. Der Standardwert stammt von DefaultUseCaches, das standardmäßig auf true gesetzt ist. ** Um einen Cache zu verwenden, müssen Sie also einen selbst implementieren. Wenn Sie das UseCaches-Flag auf true jus setzen, können Sie den verfügbaren Cache verwenden, aber nicht implementieren Cache auf eigene ..
Wenn ich alle Dateien speichern muss ichExternalCacheDir() abrufen und URLConnection.setUseCaches (true) verwenden, wie kann URLConnection wissen, welche Datei welcher URL entspricht? Oder muss ich diese Dateien manuell laden (nicht über URLConnection)? –
Ich denke, Sie müssen etwas manuell dagegen tun - eine schnelle Idee könnte sein, die Dateien mit dem hashCode() der URL zu benennen und zu prüfen, ob sie zuerst existieren; Wenn nicht, greifen Sie auf URLConnection zurück. –
Die andere Sache zu sagen ist, dass, wenn Sie eine WebView verwenden, hat dies einige integrierte Caching-Optionen - der Cache endet an der gleichen Stelle, wird aber für Sie in gewissem Maße verwaltet - so könnte es einfacher finden untersuchen Sie das, anstatt das Rad neu zu erfinden. –