Я разрабатываю Android AppWidget для своего приложения. Для обновления моего приложения мне нужно загрузить данные из сети. Но когда я пытаюсь сделать это в методе onUpdate, мой appWidget убит системой Android. Я узнал, что время выполнения операций не может быть выполнено в приемниках, поэтому я запустил сервис из метода onUpdate и запустил поток из этого. Но проблема все еще сохраняется. Может кто-нибудь, пожалуйста, дайте мне знать, как делать сетевые операции в Appwidget?Android: Сетевые операции в Appwidget
3
A
ответ
3
Делегировать загрузку службы, возможно, IntentService
, возможно, WakefulIntentService
в зависимости от того, существует ли риск, что устройство может засыпать во время самой работы.
Ваш AppWidgetProvider
просто позвонит startService()
на ваш IntentService
.
Ваш IntentService's
onHandleIntent()
метод будет делать работу, которую вы в настоящее время есть в onUpdate()
, получая свой собственный AppWidgetManager
через статический getInstance()
метод. Но, поскольку onHandleIntent()
выполняется на фоне потока, вы можете взять столько времени, сколько вам нужно. IntentService
также автоматически отключится, как только это будет выполнено со всеми выдающимися рабочими запросами.
Смежные вопросы
- 1. Как остановить сетевые операции в Android?
- 2. Службы Google и сетевые операции
- 3. AsyncTask, сетевые операции и таймауты
- 4. Android: ACTION_TIME_TICK в AppWidget
- 5. Анимация AppWidget в android
- 6. Android AppWidget не обновляется
- 7. Компиляция Android appwidget
- 8. Обновление Android AppWidget ListView
- 9. Android appwidget ViewStub
- 10. Android appwidget не показывая
- 11. Android appwidget не работает
- 12. Android appWidget несколько экземпляров
- 13. Android AppWidget Battery-Status
- 14. Android AppWidget Обновление
- 15. Android appwidget onUpdate()
- 16. Разделитель линии в Android AppWidget
- 17. Сетевые операции и разбор по отдельным потокам
- 18. сетевые операции Async никогда не закончить
- 19. Поместите все сетевые операции внутри одной нити
- 20. Как один блок тестирует сетевые операции?
- 21. android appWidget - поместите мой собственный appWidget без подтверждения пользователя
- 22. Android AppWidget Вертикальный Размах - Как
- 23. Android AppWidget onUpdate при загрузке
- 24. Android appwidget remoteviews не обновляется
- 25. Служба Android appwidget не запускается
- 26. Android appwidget-provider: динамическая ширина
- 27. Android AppWidget Timber не вход
- 28. Android AppWidget с измененной ориентацией
- 29. Android appwidget начинает новую активность
- 30. Android эмулятор и сетевые
но как объединить это с использованием RemoteViewsService? Должен ли IntentService запускать RemoteViewsService после выполнения операции async? – Malachiasz
@Malachiasz: «Должен ли упоминаться, что IntentService запускает RemoteViewsService после операции async?» - нет. 'RemoteViewsService' будет автоматически использоваться инфраструктурой виджета приложения. Вы должны убедиться, что «RemoteViewsService» знает о любых изменениях данных, которые были сделаны с помощью «IntentService», например, посредством «IntentService», обновляющего базу данных, из которой необходимо удалить «RemoteViewsService». Должен быть способ получить виджет приложения, чтобы затем перезагрузить его представления из «RemoteViewsService», хотя я не исследовал это и не знаю, с чего это делается. – CommonsWare