Недавно люди начали замечать, что приложение Facebook на iOS очень быстро расходует батарею. Инженер из компании объяснил, что причиной тому стала большая ошибка на их стороне.
Расследование выявило корень проблемы в аудио-сессиях, поэтому многие заподозрили Facebook в разработке «постоянно включенного» сервиса. Другие предположили, что Facebook просто слушает, о чем говорят вокруг.
Но все оказалось не так. Ари Грант из Facebook объяснил проблему:
Первая проблема — «CPU spin» в нашем сетевом коде. Это как ребенок в машине, который постоянно спрашивает: «Мы приехали? Мы приехали? Мы приехали?» и никак не помогает добраться до места. Этот повторяющийся процесс повлиял на быстрый расход батареи. Сегодняшний релиз должен улучшить положение дел.
Еще одна проблема, над которой мы сейчас работаем — аудиосессии. Если вы выходите из приложения после просмотра видео, аудиосессия иногда остается открытой и аудио воспроизводится беззвучно. Это как если вы закрываете приложение с музыкой и хотите, чтобы музыка продолжала играть, пока вы делаете другие вещи, но только это неспециально и ничего не играет. Приложение не делает ничего, но работает в фоновом режиме и тратит заряд. Мы решим эту проблему и аудио не будет зависать в фоновом режиме.
Проблемы, которые мы нашли, не вызваны опциональной функцией Location History в приложении Facebook или с чем-либо другим, связанным с местоположением. Если вы не включили эту функцию, выставив Location Access на «Always» и разрешив Location History внутри приложения, мы не получаем данные о вашем местонахождении в фоновом режиме. Описанные выше проблемы также ничего не изменят в этом плане.