Комментарии 27
Хм. То есть слушать музыку с фоновым приложением онлайн нельзя будет не только на ютубе но и вообще нигде?
revanced решает эту проблему
Можно, если разработчик приложения реализовал это как полагается. Ниже в комментах есть пример того, как надо.
Думаешь vk проплатила гуглу за эту правку?
Да не, я с точки зрения пользователя размышлял. У меня небольшой проект есть, в профиле можно посмотреть статьи, там у пользователей один из самых частых запросов сделать ютуб играющим на фоне. Вот я от этой новости и подумал - стоит ли заморачиваться и разматывать или сразу не шмогла сделать. Но, как уже подсказали, паниковать рано, продолжаем работать.
P. S. Думаю, изменение правильное: нечего грузить девайс и сеть, если приложение сейчас не используется.
Это да, но UnknownHostException - это странное решение. Поленились кинуть специфический ексепшн, теперь клиентский код не может отличить этот кейс от остальных сетевых проблем. Ну, не знаю.
Соглашусь. Предположу, что могли сделать для обратной совместимости, чтобы не посыпались приложения, в которых обработаны конкретные сетевые Exception-ы, а иначе - краш
Ну решается по идее просто - `public class SomeNewNetworkException extends IOException {...}` и все фоновые обработчики выхватят `IOException` что вполне себе нормально. Просто в таком случае разрабы увидят в логах именно `SomeNewNetworkException` и подправят реализацию. А с их решением проблема мимикрирует под другие, что как-бы так себе дизайн.
Там не UnknownHostException, а "Typically, an UnknownHostException
or other socket-related IOException
".
Сеть, судя по всему, просто на другом уровне отключается.
Линуса на них нет.
Вообще-то если ваше приложение должно работать c сетью в фоне, оно должно это делать не через активность, а с помощью службы.
Для чего её нужно зарегистрировать в манифесте: <service android:name=".NetworkService" android:exported="false" android:enabled="true" android:foregroundServiceType="dataSync" />
protected void StartService()
{
Intent serviceIntent = new Intent(this, NetworkService.class);
// Запуск службы в фоновом режиме,
startForegroundService(serviceIntent);
}
protected void BindService()
{
// Создание Intent для привязки службы
Intent serviceIntent = new Intent(this, NetworkService.class);
// Привязка к NetworkService
Log.i(TAG, "try bindService...");
boolean bindResult = bindService(serviceIntent, m_Connection, Context.BIND_AUTO_CREATE);
Log.i(TAG, "bindService result: " + bindResult);
}
Собственно, в вебоси (LG webOS) давно именно так. И YouTube, и Кинопоиск, и другие сервисы, где есть функция "включить видео со смартфона" именно так и работают.
Никто не утверждал, что с сетью нужно работать "через активность". Думаю всем с мало-мальским опытом понятно как правильно. Тут речь о том, что есть смысл проверить места, где запросы в фоне летят почему-то вне WorkManager или Foreground Service и поправить
Т.е. приложения, которые раньше могли работать нестабильно, перестанут работать совсем (и будут починены автором, если повезёт?)
К комментариям выше
При беглом взгляде кажется, что:
UnknownHostException вместо SomeNewNetworkException - это просто сайд-эффект более глубокого ограничения Activity для работы с сетью.
После обновления до 15 Android смартфон перестал в фоне воспроизводить Интернет радио через ~20 сек после гашения экрана. Проверено на нескольких приложениях, тема активно обсуждалась пользователями на 4PDA - решения так и не найдено, кроме отката на 14 -13 Android...
У меня по тому же принципу уведомления из мессенджеров перестают приходить. Тебе вроде написали, но узнаешь ты это только включив дисплей на посмотреть время. Странно это всё.
Сейчас Android 15 активно появляется у пользователей.
Не совсем понял. Актуальная версия Android - 16.
Доля 15-го, по-идее, наоборот должна сокращаться...
Анонс Android 16 был только 10 июня этого года. То есть, скорее всего, в продаже еще нет ни одного девайса с этой ОС
Незаметное ограничение Android 15