LruCacheキャッシュされたビットマップ(2)

Lrucacheキャッシュプログラムが自動的ので、メソッドをONSTART呼び出すために、キャッシュをクリア閉じて、彼らはちょうどそれが1024キロバイト単位で分割され、プログラムキャッシュを閉じないでください

パブリック クラス MainActivityは拡張AppCompatActivity {
     プライベート LruCache <文字列、ビットマップ> mMemoryCacheを。
    ImageViewのImageViewの; 
    ビットマップビットマップ。
    int型はcacheSize; 

    @Override 
    保護された ボイドのonCreate(@NullableバンドルsavedInstanceState){
         スーパー.onCreate(savedInstanceState)。
        setContentView(R.layout.activity_main)。
        ImageViewの = findViewById(R.id.image)。
        長い maxMemory = 。Runtime.getRuntime()maxMemory(); 
        cacheSizeの =(INT)(maxMemory / 8)/ 1024; 
        MMemoryCache = 新しい新しい LRUCache <文字列、ビットマップ> 
                cacheSizeのは){ 
            @Overrideが
            保護 INT はsizeof(文字列キー、ビットマップビットマップ){
                 // 各画像の大きさを測定するため、このメソッドをオーバーライドし、デフォルトの数は、画像を返さ。
                戻る bitmap.getRowBytes()* bitmap.getHeight()/ 1024 ; 
            } 
            @Overrideは、
            保護された 無効 entryRemoved(ブール値、文字列のキー、追い出さ
                                        {ビットマップOLDVALUE、ビットマップnewValueに)
                Log.v( "タグ"を「ハードISキャッシュフル、プッシュ"へのソフトキャッシュ)。
            }
        }。
    } 
    @Overrideは、
    保護された ボイド(){ONSTARTを
         スーパー.onStart()。
        ビットマップbitmap2 = mMemoryCache.get( "A" )。
        もし(!bitmap2 = ヌル){ 
            imageView.setImageBitmap(bitmap2)。
        } { 
            ビットマップ = BitmapFactory.decodeResource(getResources()、R.drawable.icon12)。
            mMemoryCache.put( "A" ビットマップ); 
            imageView.setImageBitmap(ビットマップ); 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/Ocean123123/p/10981307.html