0

私はRecyclerViewを使用してCardViewを表示しています。OutOfMemory Exception RecyclerViewのImageViewにAndroidのカスタムビットマップイメージをロードします。

  1. ビットマップが動的に作成された基本的なビットマップ

でのTextView

  • マイカスタムビュー: はCardViewでは2つの項目があります。

    いくつかの上下スクロールの後、私はOutOfMemoryExceptionを取得します。

    私はそれをどのように処理するのか分かりませんか? LRUCacheを使用する必要がありますか? またはPicassoのような第三者図書館 - これはURLとIDのみで動作するようです。

    は、すべてのヘルプは大歓迎

    更新:

    public class ManageProfileAdapter : RecyclerView.Adapter 
    { 
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) 
        { 
        ManageProfileViewHolder vh = holder as ManageProfileViewHolder; 
    
        vh.Caption.Text = profiles[position].Name; 
        vh.Thumbnail.SetProfile(profiles[position].Profile); 
        } 
    } 
    

    サムネイルクラスです(ビットマップを含ん)ビューから派生したカスタムクラス:

    public class ThumbnailView : View 
    { 
        private Canvas DrawCanvas; 
        private Bitmap CanvasBitmap; 
    } 
    

    ビットマップをキャンバスに描かれています。

  • +0

    RecyclerViewのViewAdapterのコードを最低限ご提供いただけますか?可能なのは、そのアダプターのカードビューから外したときに、メモリを再レンダリングするのではなく、多くのビットマップを保持することです。 –

    +0

    Picassoはアセットディレクトリまたはローカルデバイスのストレージの両方からローカルイメージでも動作します – bvanvelsen

    +0

    このトピックをも参照してください:http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an -image-to-a-bitmap-object?rq = 1 – bvanvelsen

    答えて

    0

    を、それをチェックアウトこれは正しい方向に私を導い:

    をあなたは何 再びどこかにあなたのコード内のビットマップデータを作成する必要があります。それを確認してください

    私のthumnailビューのビットマップはガベージコレクタによって削除されません。

    ソリューションです:それは内部

    1. オーバーライドあなたのフラグメントのOnDestroyViewイベント
    2. コールadapter.Dispose()アダプタで
    3. がOnCreateViewHolderでは、あなたのViewHolderItemsの
    4. をリストに追加しますメソッドをViewHolderItemsをリストに追加する
    5. アダプタのDisposeメソッドをオーバーライドします。
    6. D ispose方法は、あなたのリストを通過し、最後に、私はもう何のメモリの例外を持っていないとlogcatに私の最高の使用量が30メガバイトのRAMで

    あなたViewHolderリストをクリアViewHolder

  • のビットマップを配置します。学んだ

    レッスン:あなたはRecyclerView

    にビットマップを自分で処分する必要がありがとうございました。

  • 1

    ビットマップデータをコードのどこかに何度も作成する必要があります。

    +0

    これは質問に対する答えを提供しません。十分な[評判](http://stackoverflow.com/help/whats-reputation)があれば、[任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの説明を必要としない回答を提供する](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](レビュー/低品質の投稿/ 11988188) –

    +0

    申し訳ありませんが、彼はコードを提供してくれなかったので、他の人の意見を聞いたことがありませんでした。 – resw67

    +0

    心配はいりません。あなたは新しい情報に基づいてあなたの答えを更新していただけますか? –

    関連する問題