Многие владельцы Android устройств эпизодически сталкиваются с проблемой повышенного потребления энергии службой «Media Storage» (он-же mediaserver). Данный пост о том, как данная проблема может быть решена радикальным способом для устройств с разделяемой внутренней картой памятью и разделом /data, (Galaxy S3, Nexus 4, и многие другие), а также собственно немного об устройстве и организации внутренней памяти подобных устройств, и о том, как внутренняя карта памяти может быть ускорена и оптимизирована на Android 4.1.
К сожалению все описанное применимо только ко внутренней карте памяти.
Служба Media Storage в OS Android отвечает за индексацию всех медиа-файлов на внутренней / внешней карте. Когда mediaserver натыкается на большое скопление файлов, он глубоко и надолго уходит в индексацию найденного добра, пытаясь найти среди этих файлов что-то похожее на медиа-контент, потребляя при этом немалый процент энергии и процессорного времени, что может продолжатся по нескольку часов. Для того, чтобы это не происходило, в Android-е предусмотрен механизм .nomedia файлов, — каталоги содержащие такой файл, должны быть пропущены mediaserver-ом. По непонятным причинам, на многих современных прошивках, начиная с Jelly Bean, mediaserver просто игнорирует данные файлы, продолжая свою нелегкую и бесполезную работу по индексации внутренних ресурсов приложений. Также бывает случается, что перезагрузка устройства приводит к тому, что mediaserver начинает индексацию с нуля, что еще сильнее усугубляет ситуацию.
Небольшой дискламер: повторяя действия описанные в данном посте, вы делаете все на свой страх и риск, автор не несет ответственности за испорченные устройства, потерянные данные, потраченное время. Вы также можете лишится гарантии, т.к. потребуется модификация прошивки системы.
Читать полностью »