sadr0b0t / yashlang

PeerTube and YouTube player for Android with local playlists and whitelisted recommendations
GNU General Public License v3.0
51 stars 3 forks source link

Добавлять рекомендованные плейлисты и просто плейлисты в сервисе? #130

Open sadr0b0t opened 2 years ago

sadr0b0t commented 2 years ago

Процедура добавления рекомендованных плейлистов достаточно продолжительная. Может иметь смысл перенести ее в сервис, чтобы можно было безопасно закрывать окно приложения в процессе. Как делать сервисы обкатал в этом тикете https://github.com/sadr0b0t/yashlang/issues/8

Как вариант - посмотреть, что из себя представляет WorkManager

sadr0b0t commented 2 years ago

По WorkManager

вход здесь: https://developer.android.com/topic/libraries/architecture/workmanager/basics

Судя по всему, это нормальный вариант моего доморощенного TaskController с возможностью отправлять таски в системный менеджер заданий (как TaskController + фоновый сервис).

Например, здесь предлагают обрывать задание регулярной проверкой флага https://developer.android.com/topic/libraries/architecture/workmanager/how-to/managing-work

You can call the [ListenableWorker.isStopped()](https://developer.android.com/reference/androidx/work/ListenableWorker#isStopped()) method to check if your worker has already been stopped. If you're performing long-running or repetitive operations in your Worker, you should check this property frequently and use it as a signal for stopping work as soon as possible.

а здесь еще что-то про тесты: https://developer.android.com/topic/libraries/architecture/workmanager/how-to/integration-testing

В целом, будет правильно избавиться от TaskController и перейти на него, в таком случае, может, не потребуется еще один сервис городить. Но как-то не хочется прямо настолько сейчас этот код лопатить. Поэтому, пожалуй, начну по старой схеме с сервиса.

sadr0b0t commented 2 years ago

Так просто с наскока механически не получается перенести в сервис (PlaylistImportService). С процедурой добавления рекомендованных еще может быть понятно, т.к. это одна задача (закрыли экран добавления рекомендованных, вернулись - он показывает тот же процесс в том месте, где он сейчас находится).

А если разрешить добавлять обычные плейлисты в фоне, то придется разрешить добавлять несколько разных плейлистов одновременно (задачи будут жить в сервисе одновременно, а добавляться они могут все равно один за одним). Т.е. получаем управление очередью добавления плейлистов - нужен какой-то список этих плейлистов и т.п., т.е. нужно перерабатывать интерфейс полностью, это большая история.