Android Guarde las imágenes en SQLite o SDCard o memoria

Necesito buscar imágenes y otros datos del servidor y luego mostrarlos en la lista. Pero como el número de registros puede ser bastante grande, no estoy seguro de si debo guardar imágenes en la base de datos SQLite o guardarlas en la tarjeta SD o guardarlas en la memoria.

Gracias, nada

Siempre haga un hábito de guardar la ruta de las imágenes a la base de datos. Para una vista de lista, asegúrese de usar solo la miniatura de esa imagen. Esto te ayudará a cargar rápidamente estas imágenes en la lista.

long selectedImageUri = ContentUris.parseId(Uri.parse(anniEntry.getUri())); Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail( mContext.getContentResolver(), selectedImageUri,MediaStore.Images.Thumbnails.MICRO_KIND, null ); 

Aquí anniEntry.getUri () es la imagen uri. Ahora, póngalo en el segundo código. Puede obtener una miniatura micro o mini según el requisito

En general, se considera mala forma guardar datos binarios, como una imagen en una base de datos. En la mayoría de los casos, por algunas razones técnicas, en realidad terminará dañando el rendimiento de su base de datos. En su lugar, guarde las imágenes que desea almacenar en la memoria caché de la tarjeta SD y simplemente almacene la ruta del archivo de esas imágenes en la base de datos.

Si tiene que descargar imágenes y guardarlas en la tarjeta SD, siga este código:

 package com.tablet; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.UnknownHostException; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; /* * This class download & store the media in external storage * */ public class DownloadActivity extends Activity { private static String fileName = "android.jgp"; private Button btnDownload; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnDownload = (Button) findViewById(R.id.download); btnDownload.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { // TODO Auto-generated method stub download(); } }); private void download() { System.out.println("Inside Download"); try { // this is the file you want to download from the remote server String path = "http://code.google.com/android/goodies/wallpaper/android-wallpaper5_1024x768.jpg"; URL u = new URL(path); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); String PATH = "/data/Kamal" //Environment.getExternalStorageDirectory() // + "/download/"; + "/"; Log.v("log_tag", "PATH: " + PATH); File file = new File(PATH); file.mkdirs(); File outputFile = new File(file, fileName); FileOutputStream f = new FileOutputStream(outputFile); InputStream in = c.getInputStream(); Log.v("log_tag"," InputStream consist of : "+in.read()); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = in.read(buffer)) > 0) { //System.out.println("Reading byte : "+in.read(buffer)); f.write(buffer, 0, len1); } Toast.makeText(this, "Download Completed Successfully @ "+PATH, Toast.LENGTH_LONG).show(); f.close(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this, "MalformedURLException", Toast.LENGTH_LONG).show(); } catch (ProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this, "ProtocolException", Toast.LENGTH_LONG).show(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this, "FileNotFoundException", Toast.LENGTH_LONG).show(); }catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this, "UnknownHostException", Toast.LENGTH_LONG).show(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this, "IOException", Toast.LENGTH_LONG).show(); } } } 

Es una cuestión de requisitos de la aplicación y su implementación. Sugeriría usar tarjeta interna o sd para almacenar las imágenes y guardar su ruta en db

El almacenamiento de datos pesados ​​que no necesitan el comportamiento de devolver partes secundarias de esos datos en función de la consulta aplicada (como imágenes, videos), no se debe almacenar en la base de datos, sino que solo se debe almacenar una referencia a esos datos.