RESOLU | Ajouter un cache disque en plus de la mémoire cache existanteBonjour Comment ajouter un cache disque en plus de la mémoire cache existante sous Android? |
Android | |
Cache disque Android | |
Julia Posté le : 12 Novembre à 11:35 19 926 vues |
Noah Posté le : 12 Novembre à 11:36 |
Bonjour Voici un exemple pour ajouter un cache disque en plus de la mémoire cache existante sous Android: private DiskLruCache mDiskLruCache; private final Object mDiskCacheLock = new Object(); private boolean mDiskCacheStarting = true; private static final int DISK_CACHE_SIZE = 1024 * 1024 * 10; // 10MB private static final String DISK_CACHE_SUBDIR = "thumbnails"; @Override protected void onCreate(Bundle savedInstanceState) { ... // Initialize memory cache ... // Initialize disk cache on background thread File cacheDir = getDiskCacheDir(this, DISK_CACHE_SUBDIR); new InitDiskCacheTask().execute(cacheDir); ... } class InitDiskCacheTask extends AsyncTask<File, Void, Void> { @Override protected Void doInBackground(File... params) { synchronized (mDiskCacheLock) { File cacheDir = params[0]; mDiskLruCache = DiskLruCache.open(cacheDir, DISK_CACHE_SIZE); mDiskCacheStarting = false; // Finished initialization mDiskCacheLock.notifyAll(); // Wake any waiting threads } return null; } } class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> { ... // Decode image in background. @Override protected Bitmap doInBackground(Integer... params) { final String imageKey = String.valueOf(params[0]); // Check disk cache in background thread Bitmap bitmap = getBitmapFromDiskCache(imageKey); if (bitmap == null) { // Not found in disk cache // Process as normal final Bitmap bitmap = decodeSampledBitmapFromResource( getResources(), params[0], 100, 100)); } // Add final bitmap to caches addBitmapToCache(imageKey, bitmap); return bitmap; } ... } public void addBitmapToCache(String key, Bitmap bitmap) { // Add to memory cache as before if (getBitmapFromMemCache(key) == null) { mMemoryCache.put(key, bitmap); } // Also add to disk cache synchronized (mDiskCacheLock) { if (mDiskLruCache != null && mDiskLruCache.get(key) == null) { mDiskLruCache.put(key, bitmap); } } } public Bitmap getBitmapFromDiskCache(String key) { synchronized (mDiskCacheLock) { // Wait while disk cache is started from background thread while (mDiskCacheStarting) { try { mDiskCacheLock.wait(); } catch (InterruptedException e) {} } if (mDiskLruCache != null) { return mDiskLruCache.get(key); } } return null; } // Creates a unique subdirectory of the designated app cache directory. Tries to use external // but if not mounted, falls back on internal storage. public static File getDiskCacheDir(Context context, String uniqueName) { // Check if media is mounted or storage is built-in, if so, try and use external cache dir // otherwise use internal cache dir final String cachePath = Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !isExternalStorageRemovable() ? getExternalCacheDir(context).getPath() : context.getCacheDir().getPath(); return new File(cachePath + File.separator + uniqueName); } |
RESOLU | Sou, saoul et sousBonjourSavez-vous la différence entre sou, saoul et sous? Merci d'avance. |
Apprentissage des langues | |
Saoul Sous Sou |
RESOLU | La différence entre lit, lis et l'yBonjourAvez-vous une idée sur la différence entre lit, lis et l'y? Merci d'avance. |
Apprentissage des langues | |
Lit Lis L'y |
RESOLU | La différence entre Li et lieBonjourSavez-vous la différence entre Li et lie, s'il vous plaît? |
Apprentissage des langues | |
Li Lie |
RESOLU | Exemple de mise en place d'un LruCache pour les bitmapsBonjourJe voudrais un exemple de mise en place d'un LruCache pour les bitmaps sous Android? |
Android | |
LruCache Bitmaps Android |
RESOLU | BatteBonjourEst-ce que batte peut avoir deux sens différents? |
Apprentissage des langues | |
Batte Sens |
RESOLU | La différence entre bâte et bathBonjourSavez-vous la différence entre bâte et bath? Merci d'avance. |
Apprentissage des langues | |
Bâte Bath |
RESOLU | La différence entre boite et boîteBonjourLa différence entre boite et boîte, s’il vous plait ? Merci d'avance. |
Apprentissage des langues | |
Boite Boîte |
RESOLU | Gérer les accès concurrents sous AndroidBonjourComment gérer les accès concurrents sous Android? |
Android | |
Android |
RESOLU | La différence entre grâce et grasseBonjourAvez-vous une idée sur la différence entre grâce et grasse? Merci d'avance. |
Apprentissage des langues | |
Grâce Grasse |
RESOLU | La différence entre heurt et heurBonjourLa différence entre heurt et heur, s’il vous plait ? |
Apprentissage des langues | |
Heurt Heur Différence |
RESOLU | Charger le bitmap en mode asynchroneSalutS'il vous plaît je voudrais charger le bitmap en mode asynchrone sous Android. Avez-vous une idée? |
Android | |
Bitmap Asynchrone Android |
RESOLU | Eure, heure?SalutAvez-vous une idée sur la différence entre Eure et heure? Merci d'avance. |
Apprentissage des langues | |
Eure Heure Heurt Heur |
RESOLU | Pi, pie et pis?SalutAvez-vous une idée sur la différence entre pi, pie et pis? Merci d'avance. |
Apprentissage des langues | |
Pi Pie Pis |
RESOLU | Comment voir si ImageView est toujours mis en bitmap?Salutj'aimerais savoir comment voir si ImageView est toujours mis en bitmap sous Android? |
Android | |
ImageView Bitmap Android |
RESOLU | La différence entre houx et ouBonjourSavez-vous la différence entre houx et ou, s'il vous plaît? |
Apprentissage des langues | |
Houx Ou |
RESOLU | Hou et houe?BonjourAvez-vous une idée sur la différence entre hou et houe? Merci d'avance. |
Apprentissage des langues | |
Hou Houe Différence |
RESOLU | Décoder l'image en backgroundBonjourJe voudrais savoir s'il vous plaît comment décoder une image en background sous Android? |
Android | |
Image Background Android |
RESOLU | La différence entre vainc, vingt et vintBonjourLa différence entre vainc, vingt et vint s’il vous plaît? |
Apprentissage des langues | |
Vainc Vingt Vint |
RESOLU | La différence entre vin et vainBonjourAvez-vous une idée sur la différence entre vin et vain, s'il vous plaît? |
Apprentissage des langues | |
Vin Vain |
Veuillez vous connecter pour profiter pleinement de toutes les fonctionnalités de Oyant. | ||
Connexion |
Inscription |
|
Poster une question |