У меня есть ListView, который показывает некоторые определенные контакты из телефонной книги. Я использую этот https://stackoverflow.com/a/10235381/1809507 в качестве класса Cache и использую AsyncTask.
Когда у контакта нет фотографии, я использую фотографию по умолчанию. Я установил значение по умолчанию внутри XML. Когда я использую следующие методы для установки фотографии контакта, только если она существует, и я прокручиваю список, те контакты, у которых нет фотографии, начинают получать фотографии других контактов. Если я получаю из метода retrieveContactPhoto фотографию по умолчанию в виде растрового изображения, а не null, и назначаю ее для просмотра изображений, она отлично работает, но я думаю, что это не очень хорошее решение, когда есть много контактов без фотографий, потому что я бы кэшировал одну и ту же фотографию по умолчанию несколько раз. Или я ошибаюсь?
@Override
protected Bitmap doInBackground(Void... args)
{
Bitmap bm = HelpClasses.retrieveContactPhoto(contextInput, HelpClasses.fetchContactIdFromPhoneNumber(contextInput, phoneNumber));
if(bm != null)
{
synchronized (cache)
{
cache.put(phoneNumber, bm);
}
}
return bm;
}
@Override
protected void onPostExecute(Bitmap result)
{
if(mView != null && result != null)
{
mView.setImageBitmap(result);
}
}