2016-10-23 6 views
0

В приложениях для Android мы в основном используем потоки, отличные от основного потока пользовательского интерфейса, когда мы выполняем сетевые операции. Я видел основные приложения Java, использующие несколько потоков одновременно. Так будет хорошей практикой использовать несколько потоков в Android, кроме сетевых операций? Одна из причин, по которым я чувствую, что если я использую несколько потоков, и они непосредственно влияют на поток моего приложения, это может привести к несоответствию данных, поскольку один из потоков может не выполняться к моменту обновления Ui или пользователь переходит к следующему действию. Таким образом, все операции с данными должны происходить синхронно. Так что, в основном, это хорошая практика использовать несколько потоков в андроидах, таких как чистые приложения Java? Также почему это не происходит в java-приложениях? Является ли это из-за меньшей способности мобильного устройства обрабатывать несколько процессов по сравнению с надлежащей машиной? Спасибо.Соответствующее использование потоков в Android

+1

Да. Это нормально. Используйте их – Vyacheslav

+0

@ Vyacheslav, поэтому мы можем сказать, что я работаю над методом, в котором большой объем данных обновляется в arraylist, и это повлияет на пользовательский интерфейс, я должен использовать его в отдельном потоке? Что делать, если пользователь выполняет какую-либо другую операцию или переходит к следующему действию? – Pritish

+0

@Pritish, вы не можете изменить пользовательский интерфейс из другого потока, кроме основного потока. Если вы пытаетесь реализовать, не меняете пользовательский интерфейс, вы можете использовать AsynchTask, который будет работать в фоновом режиме и будет уведомлять основной поток, когда он будет завершен. Тем не менее, в вашем примере вы хотите обновить интерфейс, чтобы либо я написал свой код в основном потоке, либо я бы использовал activity.runOnUiThread - который является экземпляром обработчика, который поможет вам достичь вашего запроса. –

ответ

3

Вы задаете неправильный вопрос: реальный вопрос должен быть: как мне создать приложение для Android, чтобы дать пользователю лучший пользовательский интерфейс?

Как программист, вы не использовать понятие, потому что они существуют , а потому, что они добавляют значения для вещей, которые вы делаете.

Например, вы просматриваете темы, чтобы ваше приложение не блокировалось или не реагировало на запросы. Если вашему приложению нужно делать много разных вещей, тогда имеет смысл, что это может произойти в «параллельной» до определенной степени.

Конечно, темы добавить сложность к вашей логике; и, конечно, когда вы начинаете использовать потоки, то вам нужно знать, что вы делаете. Использование нескольких потоков, которые вызывают несоответствие данных per se.

Что вызывает проблемы, когда вы не знаете, что делаете!

Шорты длинной истории: ваш вопрос звучит скорее как Я не уверен, как сделать многопоточное программирование на Android; и поэтому вы должны изучить эту тему; начиная с here например!

Редактировать: В конце концов, речь идет о балансировке и прагматичности. С одной стороны, да, (правильно!) Многопоточность добавляет значение вашему приложению; но, конечно, есть стоимость с дополнительной оплатой. Итак, главный ответ, вероятно: сделайте то, что вы чувствуете себя комфортно. Если у вас есть ощущение, что многопоточность затрудняет доставку продукта, который работает правильно, то , что отвечает на ваш вопрос - вы не должны использовать то, что вам не удобно!

+0

Хотя вы можете быть верны в вопросительной части, то есть да, это связано с тем, могу ли я улучшить работу пользователей с помощью потоков, но на самом деле я не уверен, что я должен это делать, потому что даже минутное несоответствие создает проблемы в приложениях Например, в моем последнем последнем приложении я перешел к дочернему фрагменту в viewpager при щелчке уведомления, но много раз только потому, что какой-то метод UI будет вызван до того, как фрагмент будет правильно подключен, мое приложение потерпит крах. Так что мне пришлось реализовать isadded() для многих методов. – Pritish

+0

Поэтому я не хочу его использовать. – Pritish

+0

См. Мой обновленный ответ. – GhostCat

Смежные вопросы