Я работаю над проектом, который требует постоянно быстрых соединений Bluetooth. На практике я обнаружил, что Android 6 (Marshmallow), кажется, всегда кэширует Gatt для любого устройства. Новые версии ОС Android, похоже, кешируются только при подключении к периферийному устройству, что приводит к невероятно долгому времени обнаружения службы для каждого соединения Bluetooth.
В моем случае я должен поддерживать все устройства, а не только зефир. Я также не могу позволить себе связываться с периферией.
Я читал несколько мест в Интернете, что существование общих атрибутов службы и измененных характеристик сервисов заставит Android кэшироваться, даже если он не связан. Вчера я выполнил быстрый тест, который, казалось, предполагал, что это не так.
Я что-то упустил? Я подумал о том, чтобы попытаться взломать и кэшировать служебную информацию вручную, используя метод отражения, предложенный @ulusoyca в этом ответе , но похоже, что это может быть катастрофой, если API Android меняются между выпусками Android.