Я попал на этот вопрос в поисках способов оптимизировать то, что вы пытаетесь сделать.Вместо использования cached_name я запрашивал у провайдера контента Phone для каждого номера фактическое имя, но это приводило к проблемам с производительностью.
Я заметил, что стандартное приложение обновляет список при изменении, как вы это делали.
Я собираюсь реализовать ContentObserver в таблице телефонов и обновлю свое имя, когда это произойдет, я опубликую, если это будет работать.
РЕДАКТИРОВАТЬ
Я проверял (101) * исходный код приложения Контакты (Google), и они в основном отображают список с CACHED_NAME сначала и после отображения списка проверяют (на фоне), были ли какие-либо изменения вконтактные данные.Если они были, они обновляют запись CallLog и список.
По сути, я реализовал нечто подобное, и это работает.Были некоторые проблемы с производительностью, когда вы прокручивали список, когда он проверял изменения на фоне, потому что в CallLog много повторяющихся чисел.Так что в основном вам просто нужно проверить, проверяются ли эти номера.
Надеюсь, это поможет!