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(ビットマップ); } } }