В приложениях для Android мы в основном используем потоки, отличные от основного потока пользовательского интерфейса, когда мы выполняем сетевые операции. Я видел основные приложения Java, использующие несколько потоков одновременно. Так будет хорошей практикой использовать несколько потоков в Android, кроме сетевых операций? Одна из причин, по которым я чувствую, что если я использую несколько потоков, и они непосредственно влияют на поток моего приложения, это может привести к несоответствию данных, поскольку один из потоков может не выполняться к моменту обновления Ui или пользователь переходит к следующему действию. Таким образом, все операции с данными должны происходить синхронно. Так что, в основном, это хорошая практика использовать несколько потоков в андроидах, таких как чистые приложения Java? Также почему это не происходит в java-приложениях? Является ли это из-за меньшей способности мобильного устройства обрабатывать несколько процессов по сравнению с надлежащей машиной? Спасибо.Соответствующее использование потоков в Android
ответ
Вы задаете неправильный вопрос: реальный вопрос должен быть: как мне создать приложение для Android, чтобы дать пользователю лучший пользовательский интерфейс?
Как программист, вы не использовать понятие, потому что они существуют , а потому, что они добавляют значения для вещей, которые вы делаете.
Например, вы просматриваете темы, чтобы ваше приложение не блокировалось или не реагировало на запросы. Если вашему приложению нужно делать много разных вещей, тогда имеет смысл, что это может произойти в «параллельной» до определенной степени.
Конечно, темы добавить сложность к вашей логике; и, конечно, когда вы начинаете использовать потоки, то вам нужно знать, что вы делаете. Использование нескольких потоков, которые вызывают несоответствие данных per se.
Что вызывает проблемы, когда вы не знаете, что делаете!
Шорты длинной истории: ваш вопрос звучит скорее как Я не уверен, как сделать многопоточное программирование на Android; и поэтому вы должны изучить эту тему; начиная с here например!
Редактировать: В конце концов, речь идет о балансировке и прагматичности. С одной стороны, да, (правильно!) Многопоточность добавляет значение вашему приложению; но, конечно, есть стоимость с дополнительной оплатой. Итак, главный ответ, вероятно: сделайте то, что вы чувствуете себя комфортно. Если у вас есть ощущение, что многопоточность затрудняет доставку продукта, который работает правильно, то , что отвечает на ваш вопрос - вы не должны использовать то, что вам не удобно!
Хотя вы можете быть верны в вопросительной части, то есть да, это связано с тем, могу ли я улучшить работу пользователей с помощью потоков, но на самом деле я не уверен, что я должен это делать, потому что даже минутное несоответствие создает проблемы в приложениях Например, в моем последнем последнем приложении я перешел к дочернему фрагменту в viewpager при щелчке уведомления, но много раз только потому, что какой-то метод UI будет вызван до того, как фрагмент будет правильно подключен, мое приложение потерпит крах. Так что мне пришлось реализовать isadded() для многих методов. – Pritish
Поэтому я не хочу его использовать. – Pritish
См. Мой обновленный ответ. – GhostCat
- 1. Android: соответствующее использование меню опций
- 2. Android, использование потоков
- 3. Соответствующее использование событий
- 4. Confusion - Assertion Соответствующее использование
- 5. Какое правильное использование потоков в Android?
- 6. Соответствующее использование сервлета?
- 7. Sqlite: соответствующее использование commit
- 8. Соответствующее использование суррогатного ключа?
- 9. Соответствующее использование UINavigationController?
- 10. Соответствующее использование полиморфизма Вселенной
- 11. Соответствующее использование для JSON?
- 12. Соответствующее использование count_all_results()?
- 13. Соответствующее использование die()?
- 14. Соответствующее использование Mockito.reset()?
- 15. Соответствующее использование GLKBaseEffect
- 16. Соответствующее использование привязки Javascript()
- 17. Соответствующее использование статического метода
- 18. Соответствующее использование исключений?
- 19. Соответствующее использование пользовательских атрибутов?
- 20. Соответствующее использование hidden_fields
- 21. Соответствующее использование assert
- 22. Использование потоков в C#
- 23. Использование потоков в listView
- 24. Использование потоков в приложении
- 25. Использование потоков в C++
- 26. Использование потоков в Java
- 27. Использование потоков в webfragments
- 28. Использование потоков в windowsForms
- 29. Соответствующее использование обработчиков событий C#
- 30. Соответствующее использование для boost :: shared_ptr?
Да. Это нормально. Используйте их – Vyacheslav
@ Vyacheslav, поэтому мы можем сказать, что я работаю над методом, в котором большой объем данных обновляется в arraylist, и это повлияет на пользовательский интерфейс, я должен использовать его в отдельном потоке? Что делать, если пользователь выполняет какую-либо другую операцию или переходит к следующему действию? – Pritish
@Pritish, вы не можете изменить пользовательский интерфейс из другого потока, кроме основного потока. Если вы пытаетесь реализовать, не меняете пользовательский интерфейс, вы можете использовать AsynchTask, который будет работать в фоновом режиме и будет уведомлять основной поток, когда он будет завершен. Тем не менее, в вашем примере вы хотите обновить интерфейс, чтобы либо я написал свой код в основном потоке, либо я бы использовал activity.runOnUiThread - который является экземпляром обработчика, который поможет вам достичь вашего запроса. –