package com.moez.QKSMS.ui.messagelist; import android.content.Context; import android.database.Cursor; import android.util.Log; import android.util.LruCache; import com.google.android.mms.MmsException; import com.moez.QKSMS.common.utils.CursorUtils; import java.util.regex.Pattern; public class MessageItemCache extends LruCache<Long, MessageItem> { private final String TAG = "MessageItemCache"; private Context mContext; private MessageColumns.ColumnsMap mColumnsMap; private Pattern mSearchHighlighter; public MessageItemCache(Context context, MessageColumns.ColumnsMap columnsMap, Pattern searchHighlighter, int maxSize) { super(maxSize); mContext = context; mColumnsMap = columnsMap; mSearchHighlighter = searchHighlighter; } @Override protected void entryRemoved(boolean evicted, Long key, MessageItem oldValue, MessageItem newValue) { oldValue.cancelPduLoading(); } /** * Generates a unique key for this message item given its type and message ID. * * @param type * @param msgId */ public long getKey(String type, long msgId) { if (type.equals("mms")) { return -msgId; } else { return msgId; } } public MessageItem get(String type, long msgId, Cursor c) { long key = getKey(type, msgId); MessageItem item = get(key); if (item == null && CursorUtils.isValid(c)) { try { item = new MessageItem(mContext, type, c, mColumnsMap, mSearchHighlighter, false); key = getKey(item.mType, item.mMsgId); put(key, item); } catch (MmsException e) { Log.e(TAG, "getCachedMessageItem: ", e); } } return item; } }