問題タブ [android-lru-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1962 参照

android - Androidでメモリ内画像キャッシュを実装するにはどうすればよいですか?

これまで、Androidの画像にSoftReferenceキャッシュを使用していました。このキャッシュは、ListViewsに表示される画像に使用され、十分なメモリが残っている場合は、画面に表示されないアイテムの画像をメモリに保持するのに役立ちます。

これに伴う問題は、SoftReferencesが、最後のハードリファレンスがリリースされたほぼ瞬間にガベージコレクションされることです。この結果、画面から削除された画像はその時点でガベージコレクションされ、ユーザーがListViewのこのエントリにスクロールして戻ると、画像が内部電話メモリから再読み込みされ、複雑な遅延読み込みプロセスが発生します。リストの頻繁な再描画と一般的なパフォーマンスの低下。

ソフト参照動作のバグリクエストには、これは意図された動作であり、この種のものをキャッシュするにはLRUキャッシュを使用する必要があると記載されています。

私の質問を知っています。LRUキャッシュは、私が許可した量のメモリしか使用しません。ただし、アプリに大量のメモリが必要な場合、メモリは解放されません。キャッシュが使用できるメモリの量をどのように決定する必要がありますか?また、電話のメモリ状況が厳しくなった場合にキャッシュのサイズを減らす方法はありますか?

現在、画像キャッシュは、すべてのアクティビティの一種のグローバル画像ストレージとしてアプリケーション内に保存されています。これにより、アクティビティがバックグラウンドにあるか破棄されている場合でも、アプリは常に画像キャッシュのすべてのメモリを使用することになります。

0 投票する
3 に答える
1849 参照

android - Android で LruCache を使用した NoSuchMethodError

Android で LruCache を継承するカスタム クラスを使用するとエラーが発生します。画像をダウンロードしてキャッシュすることになっています。昨日は機能していましたが、今朝、この問題に遭遇しました。

これはクラスのコードです:

そして、これは LogCat からのエラーです:

なぜこれが起こっているのでしょうか?

どうもありがとうございました。

編集: このエラーは、Google Galaxy Nexus S フォンでは発生しないことに気付きましたが、Samsun Galaxy では発生します..誰か理由を知っていますか?

0 投票する
2 に答える
27836 参照

android - LRUCacheを使用してビットマップをリサイクルする必要があるのはいつですか?

LRUCacheファイルシステムに保存されているビットマップをキャッシュするためにを使用しています。ここの例に基づいてキャッシュを構築しました:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

問題は、アプリの使用中にOutOfMemoryが頻繁にクラッシュすることです。LRUCacheがイメージを削除して別のイメージ用のスペースを確保する場合、メモリは解放されていないと思います。

画像が削除されたときにBitmap.recycle()の呼び出しを追加しました。

これによりクラッシュが修正されますが、アプリに画像が表示されない場合もあります(画像があるはずの黒いスペースのみ)。発生するたびに、Logcatに次のメッセージが表示されますCannot generate texture from bitmap

クイックグーグル検索は、表示されている画像がリサイクルされているため、これが起こっていることを明らかにします。

では、ここで何が起こっているのでしょうか。削除された後にのみリサイクルするのに、リサイクルされた画像がLRUCacheに残っているのはなぜですか?キャッシュを実装するための代替手段は何ですか?Androidドキュメントには、LRUCacheが進むべき道であると明確に記載されていますが、ビットマップをリサイクルする必要性やその方法については言及されていません。

解決済み: 他の人に役立つ場合、受け入れられた回答によって提案されたこの問題の解決策は、上記のコード例で行ったことを実行しないことです(呼び出しでビットマップをリサイクルしないでくださいentryRemoved()

代わりに、ImageViewを終了したとき(onPause()アクティビティ内、またはビューがアダプターでリサイクルされたときなど)、ビットマップがまだキャッシュにあるかどうか(isImageInCache()キャッシュクラスにメソッドを追加した)、およびあるかどうかを確認します。そうでない場合は、ビットマップをリサイクルします。それ以外の場合は、そのままにしておきます。これにより、私の例外が修正され、OutOfMemoryまだ使用されているビットマップのリサイクルが防止されました。

0 投票する
5 に答える
47142 参照

android - Androidのlrucacheを使用した例

人造人間のLruCacheを理解するのに助けが必要です。読み込み/スクロールを改善するために、グリッドビューに画像を読み込むために使用したいと思います。誰かがLruCacheを使用してサンプルコードを投稿できますか?前もって感謝します。

0 投票する
1 に答える
2032 参照

android - LruCacheを使用した画像のキャッシュ

AndroidでLruCacheを使用して一部の画像をキャッシュしようとしていますが、キャッシュされません

これがコードです

ここで他の方法

ここで私はそれらを使用していますこれは私のコードです

0 投票する
1 に答える
6585 参照

android - android-support-v4 を使用しているときに android.util.LruCache.* が見つからないのはなぜですか?

Android-support-v4.jar 互換ライブラリに含まれている LruCache を使用するプロジェクトを作成しています。JB を搭載したデバイスで実行すると、コードは正常に動作しますが、GB を搭載した Droid X で実行すると、アプリは次のエラーで終了します。

Utility.java:49 は次のようになります。

そのため、LruCache またはそのメソッドを参照すると、どこでもエラーが発生します。最初に思い浮かぶのは、android-support-v4.jar が APK ファイルから除外されていたことですが、そうではないようです。jar ファイルを libs/ の下に配置し、ant デバッグを実行した後に classes.dex.d を確認すると、次の行が追加されていることがわかります。

私の 2 番目の考えは、LruCache が android-support-v4 に含まれていない可能性があるということでしたが、ソースを見ると、次のソース ファイルがそこにあり、使用しようとしているメソッドが含まれていることがわかります。

では、なぜ見つからないのでしょうか。

0 投票する
1 に答える
120 参照

android - Android システムは、停止時にアクティビティをどのように処理しますか?

アプリが画面から閉じられ、ユーザーが他のアプリに切り替えたときに、アプリのアクティビティがどうなるかについて非常に興味があります。アクティビティ サークルでは、アクティビティは onStop() に到達します。次に、システムがアクティビティを onRestart() または再起動する前にどのように処理しますか? ボンネットの下で正確に何が起こるのですか?まだキャッシュにあり、LRU に置き換えられますか?

この問題について議論しているアイデアや記事を知っている人はいますか?

可能であれば、それについて読むためのソースコードについて誰か言及できますか?

0 投票する
2 に答える
547 参照

android - データベースから小さなビットマップをキャッシュする

アプリケーションがサーバーに接続するときに、どのアイコンが古いか、または欠落しているかを確認します。
これらのアイコンを sqllite データベースに保存します。アイコンはそれほど大きくなく、約 5 ~ 10kb です。

アクティビティが開始されるたびに、データベースにアクセスして必要なアイコンを取得します。

しかし、私のアクティビティの多くは同じアイコンを使用しているため、データベースからアイコンを一度取得し、アプリケーションを高速化するためにどこかにキャッシュすることを考えていました。

どうすればいいですか?

私はこのリンクを読んでいました: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.htmlそして彼らはビットマップのlruCacheについて言及しました。

しかし、これは私が達成しようとしていることに対して少しやり過ぎではありませんか?

0 投票する
1 に答える
538 参照

android - Android Lrucacheの参照/オブジェクトが重複しているかどうか?

Android LruCache を適用して、アプリの速度を上げ、サーバーへの大量の呼び出しを回避したいと考えています。ここに私のシナリオがあります:

2 つの LruCache オブジェクトを作成しました。

mItemsCache は、一意の ID 文字列で取得できるすべてのアイテムのキャッシュを保持します。一方、mListItemsCache はすべての異なるアイテム リストをキャッシュします。各リストは、mItemsCache で利用可能なアイテムに基づいて作成されました。

私の質問は、mListItemsCache または mItemsCache から取得された Item は実際には同じ Object ですか?

put(K,V) により LruCache に格納されるたびにデータが複製されますか?

0 投票する
2 に答える
1928 参照

android - LruCache 内の画像で viewPager を高速スクロール

サイズを変更する必要がある4つの画像を持つviewPagerがあります。さまざまなオプションを実装しましたが、オプションは実行されません。私はさまざまなオプションを書きます:

  1. getView に次のように入力します。

    ビットマップは以下を取得します。

    /li>

しかし、それは非常にゆっくりです。

  1. 最後のコードを AsyncTask() に入れましたが、すばやくスクロールできません。

  2. 私は

    状態のときだけ画像を表示していますSCROLL_STATE_IDLEが、効果は他の場合と同じです。

  3. 私は LruCache を使用し、画像を A​​synctask の LruCache に保存します。
    私が入れたinstantiateItemに

    /li>

しかし、問題は前のケースと同じで、すばやくスクロールできず、アプリが非常に遅いです。
大きな品質とサイズの画像があります。viewPagerですばやくスクロールするにはどうすればよいですか?