ИМХО,
Они не все сообщения читают. При необходимости вы можете выполнить запрос с группировкой по отправителю с уникальным ключевым словом. Это даст вам список из 100-200 записей. Для первого экрана этого достаточно. По желанию, после этого вы запрашиваете 5 последних сообщений отправителей, чтобы предварительно загрузить их, чтобы ускорить доступ для чтения. А затем, при выборе отправителя, вы загружаете ТОЛЬКО сообщения отправителя (может быть, даже последние 50).
На основе этого URL: https://developer.android.com/reference/kotlin/android/content/ContentResolver У вас есть параметры «QUERY_SORT_DIRECTION_DESCENDING, QUERY_ARG_LIMIT, QUERY_ARG_SQL_GROUP_BY» который может помочь вам найти уникальных отправителей. Также вы можете рассмотреть возможность использования другого поставщика, например ContentProvider.
ОБНОВЛЕНИЕ: я могу только привести вам пример того, как это сделать в SQL. Что-то вроде:
select * from inbox GROUP BY sender.
Выдает список отправителей.
Кроме того, вы можете сохранить список в своих данных и периодически обновлять его.