2013-06-05 16 views
8

私はユニバーサル画像ローダーを使用して、アプリケーション内の画像をlistviewsで表示しています。私はUnlimitedDiscCacheを使用しています。これは、ドキュメントによると、最も速いキャッシュメカニズムです。 )の場合、ディスクキャッシュをクリアしたいのですが、指定された制限を超える最も古いキャッシュファイルのみを削除する必要があります(のように)。ユニバーサル画像ローダー - 手動でキャッシュをクリアする

私はImageLoader.clearDiscCache()の承知していますが、私はUnlimitedDiscCache

...前を使用していますので、私の場合には、これはだから私は、ユーザーがリストビューをロードし、スクロールされたときに最速のキャッシュメカニズムを持っていると思い、完全なキャッシュをクリアしますユーザーがもはやアプリケーションとやりとりしていないときに、遅いキャッシュを消去します。

どのように私はこれを達成することができますか?あなたもしたい場合

MemoryCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getMemoryCache()); 

+0

'onStop()'が呼び出されたときにアプリケーションが停止することは保証できません。それは、現在の活動が停止されていることだけを示しています。パフォーマンスの低下は、別のキャッシュメカニズムを実装するのに費やされた時間と比較すると、非常に最小限に抑えられます(アプリケーションの処理速度が遅くなる可能性があります)。 –

+0

@jeff_bordon ImageLoaderインスタンスを構築するためのコードがありますか? @Androidyはい、アプリケーションが終了しようとしているときに区別できます。たとえば、if(isFinishing()){do something} ' –

+0

@jeff_bordon BoBを持つことができます。ここのソースを参照してくださいhttps://github.com/nostra13/Android-Universal-Image-Loader/blob/master/library/src/com/nostra13/universalimageloader/cache/disc/impl/LimitedAgeDiscCache.java Writing UnlimitedAgeDiskCache willかなりストレートです。あなたが知る必要があるのは、今と今の違いです。私はそれが少しの問題の場合ListViewsの速度を低下させないと思う。 –

答えて

1

チェックhttps://stackoverflow.com/a/7763725/1023248ここからこれを使用すると、メモリからキャッシュをクリアしたい場合は

@Override 
protected void onDestroy() { 
// closing Entire Application 
android.os.Process.killProcess(android.os.Process.myPid()); 
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit(); 
editor.clear(); 
editor.commit(); 
trimCache(this); 
super.onDestroy(); 
} 


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; 
     } 
    } 
} 

// <uses-permission 
// android:name="android.permission.CLEAR_APP_CACHE"></uses-permission> 
// The directory is now empty so delete it 

return dir.delete(); 
} 
0

は、次のコードを使用することができます..あなたを助けるかもしれませんディスク内のキャッシュをクリアするには、次のコードを使用します。

DiscCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getDiscCache()); 

これははるかに簡単な方法ですfキャッシュをクリアします。 あなたはこのスレッドで同様の答えを見つけることができます。

How to force a cache clearing using Universal Image Loader Android?

私は、この情報はお役に立ちました願っています。 :)

関連する問題