Android – ION caches resultado
Actualmente estoy escribiendo una pequeña aplicación que muestra la canción actual que se reproduce en mi pub local al descargar el archivo XML de last.fm.
El problema que tengo es el siguiente: al sincronizar con el xml en línea que no recibe la nueva versión, sino que utiliza el primer xml descargado una y otra vez. Mientras tanto, abrir este enlace en un navegador aleatorio da los resultados correctos. Podría ser caché o descargar perezoso, no lo sé. Tampoco sé si esto está relacionado con ION o no.
- RxJava patrón para solicitar un remoto Observable con una caché temporal
- Android - Sencha Touch 2 problema de PhoneGap para 4.0.x
- Android, Guardar y cargar un mapa de bits en caché de diferentes actividades
- Retrofit + RxJava no puede almacenar en caché las respuestas, los encabezados de respuesta sospechados
- ¿Cómo acceder a EGL Image directamente desde Android Surface para su uso en el decodificador de video MediaCodec?
Actualmente he arreglado esto con algún código que borra toda la caché de esta aplicación antes de descargar, y esto funciona bastante bien, pero ya que probablemente querrá ampliar la aplicación tendré que encontrar otra manera de resolver este problema.
Mi código:
public class MainActivity extends Activity implements OnClickListener { private final static String nonXML = {the url to my xml-file} private String resultXml; private TextView artistTextView, songTextView, albumTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); artistTextView = (TextView) findViewById(R.id.artistTextView); songTextView = (TextView) findViewById(R.id.songTextView); albumTextView = (TextView) findViewById(R.id.albumTextView); Button mainButton = (Button) findViewById(R.id.mainButton); mainButton.setOnClickListener(this); } @Override protected void onResume() { super.onResume(); update(); } @Override public void onClick(View v) { update(); } private void update() { deleteCache(this); getXML(); XMLToClass convertor = new XMLToClass(); NonPlaylist non = convertor.convert(resultXml); artistTextView.setText(non.getArtist()); songTextView.setText(non.getSong()); albumTextView.setText(non.getAlbum()); } private void getXML() { try { Ion.with(getBaseContext(), nonXML) .asString() .setCallback(new FutureCallback<String>() { @Override public void onCompleted(Exception e, String result) { resultXml = result; } }).get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } public static void deleteCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) {} } 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; } } } return dir.delete(); } }
- ¿Hay una manera de pre-cache de una página web para ver con un Android WebView?
- Deshabilitar almacenamiento intermedio en Android VideoView / MediaController
- Android LRUCache Recuperación
- AQuery (Android Query) Cómo cargar imágenes en realidad
- Android WebView no está cargando el sitio web en caché si no hay conexión
- La animación de Android reduce el tartamudeo
- Hace ParseImageView cache ParseFile
- RxJava y datos almacenados en caché
Ion hace de hecho caché, de acuerdo con la especificación http. Si desea ignorar cachés, utilice el método .noCache () al crear su solicitud.
Sugerencia: También puede activar el registro detallado en una solicitud de iones para ver lo que está sucediendo bajo el capó con respecto a la memoria caché, etc.
.setLogging ("MyTag", Log.VERBOSE)
- Problema de actualización de Android Studio 2.2.2 LLDB 2.2
- SetReadAccess error para nuevo ParseObject