問題タブ [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.
java - Lru キャッシュ listView 画像の問題
アクティビティに画像を含む ListView があり、LRU キャッシュを追加するまでうまく機能します。画像が読み込まれているときに初めて(スクロールしない場合)ロードすると、最初の要素がロードされていたすべての画像間でその画像が変更されます。
私のLRUキャッシュは次のようになります
使用法:
これは私の BaseAdapter getView の外観です
android - lrucache にアイテムを追加できない
LRUcache を使用して、アプリが Web からダウンロードする画像をキャッシュしようとしています。Android 開発者のチュートリアルを読みましたが、LRUcache に何も追加できません。ここに私のコードがあります、
次に、アダプタ クラスの getview() から myloader を呼び出し、imageview と image url を渡します
java - Android LRU キャッシュに正しいビットマップが表示されませんか?
サムネイル付きのニュース記事があるAndroidアプリケーションを作成しています。これらのサムネイルはネットワークからロードされ、URL をキー、ビットマップを値として LruCache に保存されます。
アダプタの getView() メソッドで getThumbnail() を呼び出し、キャッシュをチェックし (必要に応じてネットワークからロード)、サムネイルを表示します。
と
ImageLoadingUtils はネットワークからロードし、完了したら結果のビットマップを ImageView に配置します。
問題は、下にスクロールすると同じ ListView でサムネイルが繰り返されることです。
また、下にスクロールしてから上に戻ると、記事に正しいサムネイルが表示されなくなりました。とてもめちゃくちゃです。
誰でも問題を見つけることができますか? 本当にありがとうございました。
android - Memory-Leaks Image-Gallery Android - 他のアプリケーションはどのように処理できますか?
画像ギャラリーを実装しようとしています。これには、〜5〜15個の小さい画像と「現在選択されている」1つの大きい画像が表示されます。
次のようになります: http://www.mobisoftinfotech.com/blog/wp-content/uploads/2012/06/galleryDemo.png
多くの情報源を調べた結果、ビットマップ キャッシュ (lru-cache) を使用することにしました (このフォーラムのユーザーに感謝します!)。
現時点ではメモリリークは発生していませんが、スクロールするたびに一部の画像がキャッシュから削除され、それらをリロードする必要があるため、このソリューションには満足していません...ユーザーは画像をリロードしています...反対側にスクロールするたびに0.5〜1秒待つのは本当に面倒です...
画像の取得を間違える可能性はありますか? 現時点では、単一選択の画像には 320x480 の解像度を使用し、下部のリストには 64x64 の解像度を使用します...
本当に奇妙なのは、画像の解像度がどれほど大きいかは問題ではないという事実です.64x64画像のみを選択しても、lru-cacheはいくつかの画像を削除します... lruキャッシュ?
次のコードは私の実装を示しています。
クラス BitmapCache:
どうもありがとうございました :(
いくつかのコード: BitmapWorkerTask:
android - LruCache が機能しない
こんにちは、コードです。URL からビットマップを正常に取得しました (ログには Bitmap が null ではなく、簡単に表示できると書かれています)。次に、それを LruCache に入れて取り戻そうとしていますが、null が返されます。(ログには、newBitmap が null であると記録されています)。私の間違いはどこですか?教えてください。Android 4.1.2 キャッシュ サイズ 8192 KB。
android - developer.android.com/training bitmapfun プロジェクト
アプリケーションでbitmapfunプロジェクト ( gridview )を使用していますが、これをテストしているときに問題が見つかりました。この問題を再現する手順は次のとおりです。
- wifiを開く -> アプリを起動 -> 画像をダウンロード (正常に動作します)。
- アプリを閉じて (戻るボタン)、wifi を無効にする -> データ ネットワークを有効にする -> アプリを再起動します (それでも正常に動作します)。
- すべての画像がダウンロードされる前に、アプリを閉じます(戻るボタン)->データネットワークを無効にします-> wifiを有効にします。この手順の後、アプリケーションを再起動すると、画像がダウンロードされません。
logcat では、imageWorker の cancelPotentialWork() ですべての画像がキャンセルされており、開始されていないことがわかります。私の推測では、以前の bitmapworkerTask (ダウンロードを担当) で何かが起こっており、新しいタスクとの衝突が発生しています。私のアプリでは、戻るボタンが押されたときにすべてのキャッシュをクリアします。しかし、これは問題の原因ではありません。元の bitmapfun で同じシナリオをテストしたところ、問題も発生したからです。この問題を解決するにはどうすればよいですか? また、プロジェクトのマルチスレッドasynctaskをシングル スレッドに変更しました。すべてのイメージビュー参照をクリアし、実行中のすべてのタスクをキャンセルする方法はありますか?
私の英語で申し訳ありませんが、bitmapfun プロジェクトの性質に関する詳細情報を提供していませんが、それは私の質問を非常に拡張します!何でも聞いてください!
編集: 問題を再現するには、メニュー オプションを使用してアクティビティを終了するたびにキャッシュをクリアすることをお勧めします。また、手順 1 ~ 3 を 1 回実行しても問題が発生するかどうかはわかりません。多分あなたはそれらを繰り返さなければなりません!
Edit2(追加ヘルプ): 問題なくアクティビティを開始すると、最初の画像の logcat は次のようになります。
問題のあるアクティビティを開始すると、logcat は次のようになります。
cancelPotentialWork が呼び出された 2 番目のケースで doInBackground が開始されないのはなぜですか? コードのシーケンスによると、これは実行する必要がある次の部分です!エラーをどこで検索すればよいか、少なくとも誰かが考えていますか?
android - アプリケーション シングルトンに LRUCache オブジェクトを格納するのは良い考えですか?
サムネイルやその他の小さなビットマップをキャッシュするために使用する LRUCache があります。現在はメインの活動で使用していますが、他の活動でも使用したいと思っています。これは、この LRUCache オブジェクトをカスタム アプリケーション シングルトン (Application を拡張する) に単純に格納し、他のアクティビティでキャッシュにアクセスする問題を解決するのが良い考えかどうか疑問に思います。私が懸念している理由は、私が理解しているように、アプリケーション プロセスが強制終了された場合 (アプリがバックグラウンドで長時間実行されたままになっている場合に発生する可能性が非常に高い)、アプリケーション オブジェクト、したがってキャッシュがガベージになるためです。集めました。私が間違っている場合は訂正して、この問題をよりよく理解するのを手伝ってください/この問題の解決策を提供してください.
android - SimpleDiskCache inputStream の不正な数値形式
SimpleDiskCache コード ( github リンク) を使用して、作業中の Android アプリ用にいくつかのビデオ ファイルをディスクにキャッシュしています。ビデオファイルをキャッシュに入れる方法は次のとおりです。
そして、キャッシュからビデオファイルを取得するコードは次のとおりです。
唯一の問題は、IOExption: read failed: EBADF (Bad file number) が発生することです。スタック トレースは次のとおりです。
誰かが私が間違っていることを知っていますか? ありがとう!