На мой взгляд, смешанный раствор должен быть лучше. Почему это? Потому что вы не знаете, или предполагается, что в большинстве случаев вы не можете знать, как и сколько контактов ваше приложение должно будет перечислить . А также сколько контактов хранится в телефоне. Если мы знаем оба ответа, то, безусловно, мы можем выбрать наиболее подходящее решение.
Поэтому я предлагаю вам сначала внести фиксированное число контактов с помощью массива в памяти в фоновом потоке, например, в первые 20. Также, если вы считаете, что ваше приложение выполнит более одного запроса к этой службе. было бы здорово использовать кеширование. Наихудшим подходом должно быть снова и снова звонить в службу контактов
Затем для запроса на контакт № 21 можно привести следующие 20 и так далее.
Таким образом, вы можете использовать преимущества обоих миров, а также минимизировать недостатки. Всегда зависит от приложения и контекста, о котором мы говорим.