У меня есть активность с кнопкой загрузки.Когда я нажимаю на него, сервис запускается.Сервис создает уведомления и публикует его в панели уведомлений.Если я показываю подробности уведомления, я вижу строку прогресса, показывающую состояние загрузки.
Причина: я не знал, что служба работает в главном потоке, кто-то предложил мне использовать службу intentservice, которая создает рабочий поток.само собой.Так что все в порядке, и мой графический интерфейс не зависает во время загрузки.
У меня есть одна проблема.Чтобы использовать intentservice, мне пришлось реализовать код загрузки и часть уведомлений внутри метода onHandleIntent.Теперь я обнаружил, что у службы интентов есть своего рода очередь, которая управляет намерениями один раз за раз.Поэтому, если я дважды щелкну кнопку загрузки из действия, он создаст новое уведомление, начнет загрузку, а затем, когда она закончит, снова войдет в onHandleIntent, создаст второе уведомление и начнет вторую загрузку.Для меня это нормально - скачивать файлы вплотную, а не вместе, но, по крайней мере, мне бы хотелось, чтобы, если я дважды нажму кнопку загрузки, служба загрузит уведомления о том, что ожидается 2 загрузки.Я не могу этого сделать, потому что служба намерений выполняет код один раз и еще раз .......... Есть ли способ исправить это?
Есть ли способ обработкиочередь вручную говорит что-то вроде .... если вы получаете другое намерение, сделайте это ........ обновите уведомление ....... и затем продолжите первую загрузку ....
Другой вопрос, может ли служба намерений изменить графический интерфейс, учитывая, что он работает в другом потоке, или я должен использовать обработчик и отправить сообщение обратно в действие?
И последнее, где создан поток, простопосле метода onCreated или внутри onHandleIntent ???